Verfasst: 17.03.2006 23:26
Hi,
Hier ein kleines testprogramm für die MVCOM library von Marc Vitry
Hat mir jedenfalls bisher gute dienste geleistet
Übrigens der handshake sollte auf 0 stehen bei Geräten die nur über zwei Leitungen verfügen (RXD/TXD).
Geräte die damit bisher gut funktionieren :
Mitutoyo Digitale Schieblehre
Datalogic DLL5510 (Barcode Laserscanner)
Datalogic Gryphon M100 (Barcode Laserscanner)
Datalogic FireScan D131 (Barcode Laserscanner)
Symbol FZT302 (Barcode Laserscanner)
Diverse Spannungquellen von Chroma und Genesys
BasicTiger (Ein-Chip Microcontroller)
[edit] Snippet hatte einen fehler 
[edit] DTR DTS setzen / Wert senden hinzugefügt (danke für den Hinweis SVEN)
Hier ein kleines testprogramm für die MVCOM library von Marc Vitry
Hat mir jedenfalls bisher gute dienste geleistet

Übrigens der handshake sollte auf 0 stehen bei Geräten die nur über zwei Leitungen verfügen (RXD/TXD).
Geräte die damit bisher gut funktionieren :
Mitutoyo Digitale Schieblehre
Datalogic DLL5510 (Barcode Laserscanner)
Datalogic Gryphon M100 (Barcode Laserscanner)
Datalogic FireScan D131 (Barcode Laserscanner)
Symbol FZT302 (Barcode Laserscanner)
Diverse Spannungquellen von Chroma und Genesys
BasicTiger (Ein-Chip Microcontroller)
Code: Alles auswählen
; ComPortTest (PB4B7)
; Benötigt MVCOM-Library von Marc Vitry
; http://www.purearea.net/pb/download/userlibs/MVCOM_LIBRARY.zip
Procedure SendByte(Port,buffer.w)
If ComSendByte(Port,@buffer,1)
Debug "SendByte $"+RSet(Hex(buffer),2,"0")
Else
Debug "SendByte error"
EndIf
EndProcedure
If OpenWindow(0,0,0,250,250,"COM Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonGadget(1,10,10,50,20,"STX")
ButtonGadget(2,60,10,50,20,"ETX")
ButtonGadget(3,110,10,50,20,"ENQ")
ButtonGadget(4,160,10,50,20,"LF")
ButtonGadget(5,10,30,50,20,"FF")
ButtonGadget(6,60,30,50,20,"CR")
ButtonGadget(7,110,30,50,20,"NAK")
ButtonGadget(8,160,30,50,20,"ACK")
TextGadget(9,10,70,200,140,"",#PB_Text_Border)
TextGadget(10,10,220,200,20,"",#PB_Text_Border)
CheckBoxGadget(11,10,50,50,20,"DTR")
CheckBoxGadget(12,70,50,50,20,"RTS")
StringGadget(13,130,50,30,20,"0",#PB_String_Numeric)
ButtonGadget(14,170,50,40,20,"Send")
SetTimer_(WindowID(0),1,100,0)
EndIf
; cominit$="COM1:9600,N,8,1"
cominit$="COM3:4800,E,7,1"
Port=ComOpen(cominit$,0,1024,1024)
If Port
SetGadgetText(10,cominit$+" Online")
EndIf
Repeat
Event=WindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; STX
SendByte(Port,2)
Case 2 ; ETX
SendByte(Port,3)
Case 3 ; ENQ
SendByte(Port,5)
Case 4 ; LF
SendByte(Port,10)
Case 5 ; FF
SendByte(Port,12)
Case 6 ; CR
SendByte(Port,13)
Case 7 ; NAK
SendByte(Port,21)
Case 8 ; ACK
SendByte(Port,6)
Case 11 ; DTR
ComSetDTR(Port,GetGadgetState(11))
Case 12 ; RTS
ComSetRTS(Port,GetGadgetState(12))
Case 14
SendByte(Port,Val(GetGadgetText(13))&$FF)
EndSelect
Case #WM_TIMER
If Port>0
While ComInputBufferCount(Port)>0
rd.b=0
ComReadByte(Port,@rd,1)
Debug rd
If rd>0
If rd=13
Debug ("SCAN COMPLETE : "+String$)
hexstring$=""
For i=1 To Len(String$)
hexstring$+RSet(Hex(Asc(Mid(String$,i,1))),2,"0")+" "
Next
SetGadgetText(9,hexstring$+Chr(13)+String$)
String$=""
Else
If rd>31
String$+Chr(rd)
EndIf
EndIf
EndIf
Wend
EndIf
EndSelect
Until Event=#PB_Event_CloseWindow
ComClose(File)
CloseWindow(0)

[edit] DTR DTS setzen / Wert senden hinzugefügt (danke für den Hinweis SVEN)