Hoi allemaal,
Ik probeer een commando via VBS te sturen naar een COM poort.
Er is een tool (een .exe) gemaakt door iemand anders om bepaalde dingen te sturen naar een COM poort voor het aansturen van een apparaat.
Ik heb van de leverancier van het apparaat een complete data sheet gekregen hoe ik het apparaat kan aansturen, dus commando's weet ik.
Nu heb ik de volgende VBS:
Opzich werkt het MAAR!
Het werkt pas nadat het programma van de leverancier heb opgestart (die doet dus nog iets met de COM poort).
Leuk en aardig, dus even portmon van sysinternals er over gelaten.
Nu krijg ik bij de tool van de leverancier dit:
Voor mijn VBS krijg ik het volgende als output:
Nu is mijn vraag dus, wat is er nu verkeerd aan mijn script, en zijn er nog andere mogelijkheden om dit te doen?
Alvast bedankt.
Ik probeer een commando via VBS te sturen naar een COM poort.
Er is een tool (een .exe) gemaakt door iemand anders om bepaalde dingen te sturen naar een COM poort voor het aansturen van een apparaat.
Ik heb van de leverancier van het apparaat een complete data sheet gekregen hoe ik het apparaat kan aansturen, dus commando's weet ik.
Nu heb ik de volgende VBS:
VBScript:
1
2
3
4
5
| set fso = CreateObject("Scripting.FileSystemObject") set com = fso.OpenTextFile("COM1:9600,N,8,1",2) com.write("C00" & vbCr) WScript.Sleep(10) com.close() |
Opzich werkt het MAAR!
Het werkt pas nadat het programma van de leverancier heb opgestart (die doet dus nog iets met de COM poort).
Leuk en aardig, dus even portmon van sysinternals er over gelaten.
Nu krijg ik bij de tool van de leverancier dit:
En nog een lijst met IOCTL_SERIAL_GET_COMMSTATUS (tool van leverancier leest namelijk ook de COM poort uit, maar dit is voor mij niet nodig).0 0.00005236 RS232C_TOOL.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open
1 0.00000341 RS232C_TOOL.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
2 0.00000538 RS232C_TOOL.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 25600 OutSize: 2560
3 0.00000302 RS232C_TOOL.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
4 0.00000094 RS232C_TOOL.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:5000
5 0.00000189 RS232C_TOOL.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
6 0.00000173 RS232C_TOOL.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
7 0.00000130 RS232C_TOOL.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
8 0.00000224 RS232C_TOOL.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
9 0.00000127 RS232C_TOOL.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
10 0.00000189 RS232C_TOOL.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
11 0.00000107 RS232C_TOOL.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
12 2.32581410 RS232C_TOOL.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
13 0.00000114 RS232C_TOOL.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
14 0.00000086 RS232C_TOOL.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
15 0.00000086 RS232C_TOOL.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
16 0.00000725 RS232C_TOOL.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 19200
17 0.00000352 RS232C_TOOL.exe IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS
18 0.00000359 RS232C_TOOL.exe IOCTL_SERIAL_SET_DTR Serial0 SUCCESS
19 0.00000242 RS232C_TOOL.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
20 0.00000121 RS232C_TOOL.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
21 0.00000523 RS232C_TOOL.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:0 XonLimit:6400 XoffLimit:6400
22 0.00000191 RS232C_TOOL.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT TXCLEAR
23 0.00000137 RS232C_TOOL.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
24 0.00000194 RS232C_TOOL.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXABORT RXCLEAR
Voor mijn VBS krijg ik het volgende als output:
Ik zie nergens waar een BAUD rate of iets wordt ingesteld.0 0.00005109 cscript.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open
1 0.00000114 cscript.exe IRP_MJ_SET_INFORMATION Serial0 SUCCESS -140613956
2 0.00002582 cscript.exe IRP_MJ_WRITE Serial0 SUCCESS Length 4: C00.
3 0.00000352 cscript.exe IRP_MJ_CLEANUP Serial0 SUCCESS
4 0.10936699 cscript.exe IRP_MJ_CLOSE Serial0 SUCCESS
Nu is mijn vraag dus, wat is er nu verkeerd aan mijn script, en zijn er nog andere mogelijkheden om dit te doen?
Alvast bedankt.