Testen COM1-Schnittstelle ohne 2. PC

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Testen COM1-Schnittstelle ohne 2. PC

Beitrag 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?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
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:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag 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.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
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:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

@falko,
super, es funktioniert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
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:

Beitrag von Falko »

Das freut mich :allright:

Grüße, ..Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Clipper
Beiträge: 30
Registriert: 24.12.2004 06:47
Wohnort: NRW

Beitrag 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
Benutzeravatar
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:

Beitrag von Falko »

Tolles Tool, danke für die Info :allright:

Vorher hatte ich eine Shareware benutzt um eine elektronische Waage
zu simulieren.

Grüße, Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Beitrag 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
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Beitrag von Helmut »

Was sind
Super-IO-Chips (landläufiger Name "Winbond"
haben die viele I/O`s ?
Nenn doch bitte ein IC mit Namen.
Antworten