Testen COM1-Schnittstelle ohne 2. PC
Testen COM1-Schnittstelle ohne 2. PC
Hallo,
ich möchte eine kleine Datei (einzelne Buchstaben) über die COM1-Schnittstelle senden.
Nun habe ich aber keine zwei Pc´s zur Verfügung.
Habe aber zwei COM-Schnittstellen: COM1 und COM2
Wie kann ich dennoch mein Programm testen?
ich möchte eine kleine Datei (einzelne Buchstaben) über die COM1-Schnittstelle senden.
Nun habe ich aber keine zwei Pc´s zur Verfügung.
Habe aber zwei COM-Schnittstellen: COM1 und COM2
Wie kann ich dennoch mein Programm testen?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
- Falko
- Admin
- Beiträge: 3531
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0 - Kontaktdaten:
Ich hab's zwar noch nicht gemacht, aber theoretisch müsste es gehen.
RXD und TXD beider Coms miteinander verbinden. Masse, dürfte sich
erledigt haben, da diese eigentlich bei beiden im PC verbunden ist.
dann einfach zwei Programme schreiben. Das eine, als Empfänger für z.B.
COM2 und das andere, was Daten senden will für COM1.
Somit könntest du Bedingungen einbauen, die das zweite Programm
dir sendet, wenn du ihm was sendest.
Wie gesagt, ich hab's noch nicht so gemacht. Zum Testen der
COM-Schnittstelle, habe ich mir einfach einen Stecker mit Lötbrücken
gemacht, die die jeweiligen Verbindungen herstellt.
Diese stehen auch in der ersten Hilfeversion von MVCOM. Wenn es nur
darum geht, Daten anzuzeigen, welche gesendet wird, reicht das Beispiel
als auch die Shaltung von Mark Virtrys MVCOM vollkommen aus.
Gruß Falko
RXD und TXD beider Coms miteinander verbinden. Masse, dürfte sich
erledigt haben, da diese eigentlich bei beiden im PC verbunden ist.
dann einfach zwei Programme schreiben. Das eine, als Empfänger für z.B.
COM2 und das andere, was Daten senden will für COM1.
Somit könntest du Bedingungen einbauen, die das zweite Programm
dir sendet, wenn du ihm was sendest.
Wie gesagt, ich hab's noch nicht so gemacht. Zum Testen der
COM-Schnittstelle, habe ich mir einfach einen Stecker mit Lötbrücken
gemacht, die die jeweiligen Verbindungen herstellt.
Diese stehen auch in der ersten Hilfeversion von MVCOM. Wenn es nur
darum geht, Daten anzuzeigen, welche gesendet wird, reicht das Beispiel
als auch die Shaltung von Mark Virtrys MVCOM vollkommen aus.
Gruß Falko
Hallo Falko,
danke erstmal.
Hiernach habe ich gesucht, aber nichts gefunden:
danke erstmal.
Hiernach habe ich gesucht, aber nichts gefunden:
Code: Alles auswählen
Diese stehen auch in der ersten Hilfeversion von MVCOM.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
- Falko
- Admin
- Beiträge: 3531
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0 - Kontaktdaten:
Die ältere Version von MVCOM, ist diese hier:
http://pagesperso-orange.fr/marc.vitry/ ... ARYV11.zip
Dort müsste, wenn sich nichts geändert hat, die alte Hilfe mit der Belegung
der Stecker stehen. Diese als auch die neuere Version sollen unter PB 4X
laufen.
Die neue bzw. aktuelle Version wobei in dieser Hilfe die Steckerbelegung
leider nicht mehr angegeben ist, hier:
http://pagesperso-orange.fr/marc.vitry/ ... ARYV12.zip
Gruß Falko
http://pagesperso-orange.fr/marc.vitry/ ... ARYV11.zip
Dort müsste, wenn sich nichts geändert hat, die alte Hilfe mit der Belegung
der Stecker stehen. Diese als auch die neuere Version sollen unter PB 4X
laufen.
Die neue bzw. aktuelle Version wobei in dieser Hilfe die Steckerbelegung
leider nicht mehr angegeben ist, hier:
http://pagesperso-orange.fr/marc.vitry/ ... ARYV12.zip
Gruß Falko
Vielleicht hilft Dir auch "com0com"
Nullmodem-Emulator; erstellt unendlich viele virtuelle COM-Port-Paare und kann diese mit einem virtuellen Nullmodemkabel verbinden, sodass eine auf COM-Ports basierende Anwendung mit der anderen verknüpft werden kann; der Output der einen Anwendung ist somit gleichzeitig der Input der anderen und umgekehrt
http://www.heise.de/software/download/com0com/49731
Nullmodem-Emulator; erstellt unendlich viele virtuelle COM-Port-Paare und kann diese mit einem virtuellen Nullmodemkabel verbinden, sodass eine auf COM-Ports basierende Anwendung mit der anderen verknüpft werden kann; der Output der einen Anwendung ist somit gleichzeitig der Input der anderen und umgekehrt
http://www.heise.de/software/download/com0com/49731
Dies ist zwar nicht mehr der taufrischeste Thread, aber da ich mich gerade mit den Super-IO-Chips (landläufiger Name "Winbond", können aber natürlich auch Chips anderer Hersteller sein) beschäftige (Erkennung und Nutzung der Funktionen), hier ein Hinweis: Alle (halbwegs) modernen Chips bieten eben für diesen Zweck einen Test-Modus an, der alle Verbindungen nach aussen kappt und das gesendete Zeichen in den Empfangs-Puffer desselben Ports schreibt (Loop-Modus). Für Winbond-Chips hier ein Beispiel, benötigt wird die giveio.pbi (s.Code) oder siehe meinen Beitrag betr. giveio.sys.
Gruß
Helle
Code: Alles auswählen
;- UART - Loop - Test für Winbond Super - IO - Chips
;- "Helle" Klaus Helbing, 08.09.2008, PB 4.20
XIncludeFile "giveio.pbi" ;enthält auch giveio.sys als Data, bei Bedarf hier: http://www.mdcc-fun.de/k.helbing/giveio/giveio.zip
;------------------ Programm-Anfang Portzugriff
;Messages = 1 ;für Fehlersuche oder reine Neugier
RegTest() ;ob giveio in Registry vorhanden
If hReg
Abfrage = MessageRequester("Abfrage", "Soll giveio installiert werden ?", #PB_MessageRequester_YesNo)
If Abfrage = #PB_MessageRequester_Yes
DienstInst() ;war noch nicht installiert
Else
End
EndIf
EndIf
hMgr = OpenSCManager_(#Null, #Null, #GENERIC_READ) ;Handle für Zugriff auf den Dienst-Manager
DienstStatus() ;bei Programmstart überprüfen
If SS\dwCurrentState <> 4 ;4 = schon gestartet
DienstStart() ;noch nicht gestartet, also jetzt starten
EndIf
OpenDevice()
;jetzt sind Port-Zugriffe möglich
;==================================================================================================
;Hier für Winbond (evtl.auch für FinTek, kann ich aber nicht testen)
Global PortAdr.w
OutB($2E, $87) ;Einschalten des Extended Function Mode für Winbond
OutB($2E, $87) ;muss 2x aufgerufen werden!
OutB($2E, $7) ;Logical Device auswählen
OutB($2F, $2) ;2 = UART A oder eben COM1
OutB($2E, $60) ;High-Byte Register Address Base
InB($2F)
PortAdr = WertB
PortAdr << 8 ;nach Word-High schieben
OutB($2E, $61) ;Low-Byte Register Address Base
InB($2F)
PortAdr + WertB
OutB($2E, $30) ;aktiviert UART A
OutB($2F, $1)
InB($2F) ;1, wenn Aktivierung erfolgreich
OutB($2E, $AA) ;Extended Function Mode beenden
UART$ = "Aktivierung von UART A war "
If WertB = 1
UART$ + "erfolgreich"
UART$ + #LFCR$ + "PortAdresse = $" + Hex(PortAdr) + #LFCR$
Else
UART$ + "nicht erfolgreich"
MessageRequester("UART", UART$)
End
EndIf
InB(PortAdr + 4)
WertB | %00010000 ;Loop-Bit setzen
OutB(PortAdr+ 4, WertB)
InB(PortAdr)
UART$ + "Jetziger Wert im Empfangs-Puffer : Bin = %" + RSet(Bin(WertB), 8, "0") + " = Zeichen " + Chr(34) + Chr(WertB) + Chr(34) + #LFCR$
WertB = 65 ;neu zu sendendes Zeichen hier praktisch Senden
OutB(PortAdr, WertB)
UART$ + "Eben gesendetes Zeichen : " + Chr(34) + Chr(WertB) + Chr(34) + #LFCR$
Delay(10) ;austesten! Delay reicht für diesen Zweck
InB(PortAdr) ;hier praktisch Empfang
UART$ + "Neuer Wert im Empfangs-Puffer : Bin = %" + RSet(Bin(WertB), 8, "0") + " = Zeichen " + Chr(34) + Chr(WertB) + Chr(34)
MessageRequester("UART Loop-Test", UART$)
;==================================================================================================
;- Ende
If SS\dwCurrentState <> 4
DienstEnd() ;war vorher nicht gestartet, also jetzt wieder beenden
EndIf
;DienstRemove() ;bei Bedarf, evtl. Rechner-Neustart
CloseServiceHandle_(hMgr) ;hier erst beenden
End
Helle