Seite 1 von 2
Testen COM1-Schnittstelle ohne 2. PC
Verfasst: 12.11.2007 09:08
von dysti
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?
Verfasst: 12.11.2007 16:23
von Falko
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
Verfasst: 12.11.2007 18:56
von dysti
Hallo Falko,
danke erstmal.
Hiernach habe ich gesucht, aber nichts gefunden:
Code: Alles auswählen
Diese stehen auch in der ersten Hilfeversion von MVCOM.
Verfasst: 12.11.2007 19:41
von Falko
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
Verfasst: 13.11.2007 13:59
von dysti
@falko,
super, es funktioniert.
Verfasst: 13.11.2007 17:09
von Falko
Das freut mich
Grüße, ..Falko
Verfasst: 09.12.2007 16:56
von Clipper
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
Verfasst: 29.12.2007 20:50
von Falko
Tolles Tool, danke für die Info
Vorher hatte ich eine Shareware benutzt um eine elektronische Waage
zu simulieren.
Grüße, Falko
Verfasst: 08.09.2008 19:13
von Helle
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.
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
Gruß
Helle
Verfasst: 08.09.2008 23:06
von Helmut
Was sind
Super-IO-Chips (landläufiger Name "Winbond"
haben die viele I/O`s ?
Nenn doch bitte ein IC mit Namen.