Prenos dat mezi 2 PC po seriove lince
Dobrý den,
Vyřešil jsem ovládání pomocí LPT (výstupy ovládají kolejiště, tedy výhybky, návěstidla, závory). Vyřešil jsem i příjem pomocí GAMEportu (počítač indikuje obsazení a uvolnění koleje vlakem) a ted me ješte napadlo vyřešit komunikaci mezi 2 počítači po seriové lince.
Takže problém je následující.
Jsou 2 počítače propojene klasickým COM kabelem (9 pin CANNON) a potřebuji pomoci sestavit program, který bude schopen posílat libovolně dlouhé zprávy z jednoho počítače do druhého a naopak. Vlastne vznikne jednoduchy chat. K programování používám dnes netradiční jazyk Visual Basic 6.0, rozhraní WinAPI a případně i potřebné knihovny, které se dají stáhnout (RSCOM.DLL).
Zdrojový kod na inicializaci COM portu použil jsem tento:
Declare Function OPENCOM Lib "RSCOM" (ByVal OpenString$) As Integer
Declare Sub TIMEOUTS Lib "RSCOM" (ByVal b%)
Declare Sub BUFFERSIZE Lib "RSCOM" (ByVal b%)
Declare Sub CLOSECOM Lib "RSCOM" ()
Declare Sub SENDBYTE Lib "RSCOM" (ByVal Dat%)
Declare Function READBYTE Lib "RSCOM" () As Integer
Declare Sub SENDSTRING Lib "RSCOM" (ByVal Dat$)
Declare Function READSTRING Lib "RSCOM" () As String
Declare Sub CLEARBUFFER Lib "RSCOM" ()
Declare Function INBUFFER Lib "RSCOM" () As Integer
Declare Function OUTBUFFER Lib "RSCOM" () As Integer
Declare Sub DTR Lib "RSCOM" (ByVal b%)
Declare Sub RTS Lib "RSCOM" (ByVal b%)
Declare Sub TXD Lib "RSCOM" (ByVal b%)
Declare Function CTS Lib "RSCOM" () As Integer
Declare Function DSR Lib "RSCOM" () As Integer
Declare Function RI Lib "RSCOM" () As Integer
Declare Function DCD Lib "RSCOM" () As Integer
Declare Function INPUTS Lib "RSCOM" () As Integer
Declare Sub TIMEINIT Lib "RSCOM" ()
Declare Function TIMEREAD Lib "RSCOM" () As Double
Declare Sub DELAY Lib "RSCOM" (ByVal ms As Double)
Declare Sub REALTIME Lib "RSCOM" ()
Declare Sub NORMALTIME Lib "RSCOM" ()
rem otevreni portu
Private Sub Form_Load()
i = OPENCOM("COM1,1200,N,8,1")
If i = 0 Then
i = OPENCOM("COM2,1200,N,8,1")
ElseIf i = 0 Then
i = OPENCOM("COM3,1200,N,8,1")
End If
If i = 0 Then MsgBox ("Chyba při pokusu otevřít port")
End Sub
tyto kody mám z ruzných internetových zdrojů, tento funguje bez závad. Jenže nastal pro mě ohromný problém, nikde jsem nenašel příkazy které by mi prozradily že právě ony posílají data po serii. Analogický příklad (OUT COM1,DATA) a zároven jak hlídat druhy port a zjistit zda nepřišly nejaká data. Opět příklad prijate = INP (COM1).
Pokud stím někdo má zkušenost a je se ochoten se mnou o to podělit, předem děkuji za pomoc.
Závěrem dodávám že nečekám až to někdo vyřeší za mě, ale stále hledám na internetu postupy.
Příjemný den.