Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Netuším prečo takto "kostrbate" a nemotorne to riešiš, ale ak sa nemýlim, tak VB6 je: Object-based a…
pme 30.08.2013 17:49
pme
Visual Basic 6.0 je objektově orientovaný jazyk, jenže moje verze jaksi nemá komponentu pro COM, LPT…
Peršink163054 30.08.2013 17:55
Peršink163054
Nepotrebujes na vsetko komponenty. Skutocne programovanie neni len lepenie nejakych hotovych kompone… poslední
MM.. 30.08.2013 18:06
MM..

Netuším prečo takto "kostrbate" a nemotorne to riešiš, ale ak sa nemýlim, tak VB6 je: Object-based and Event-driven jazyk.
Proste treba použiť objekt a reagovať na udalosti...

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.

takže študuj: www.control.com

Visual Basic 6.0 je objektově orientovaný jazyk, jenže moje verze jaksi nemá komponentu pro COM, LPT, GAME. Proto musím použít knihovny nebo jiný způsob.

Na odkaz mrknu, hledám to už celý týden, ale po tom týdnu jsem si řekl že zkusím požádat o pomoc. Ono těch odkazů je skutečně moc a zase nemůžu sedět u počítače od rána do večera

Nepotrebujes na vsetko komponenty. Skutocne programovanie neni len lepenie nejakych hotovych komponent, na event handling a priame pouzitie WinAPI apod nepotrebujes ziadne komponenty. Oni tie komponenty tiez nepadaju z neba ale niekto to naprogramoval, ty si mozes naprogramovat to same, a trebars trochu inac (presne tak jak to potrebujes), potom nie si obmedzeny komponentou a nemusis hladat popis tej komponenty (v tomto pripade tej dll). Navyse komponenty mozu byt aj chybne ptz nevies kto to programoval a nevies ci to nebol nejaka truba.

Zpět do poradny Odpovědět na původní otázku Nahoru