Visual basic compoort aansturen

Maar dat lukt beslist nog wel...

Visual basic compoort aansturen

Postby olaf99 » Wed Aug 31, 2016 7:19 pm

Hallo

Ik ben bezig met mijn modelbaan besturing. Ik wil mijn Atmel aansturen met een adres byte en een data byte. De software wil ik in Visual basic doen en ik gebruik de compoort.
De Atmel maakt alleen gebruik van de TXD en de RXD compoort lijn.
Mijn eigen programma kan ik niet aan de praat krijgen. Ben vervolgens gaan testen met het programma MicroRidge (compoort test programma) en daar kan ik mijn Atmel wel mee aansturen. Dus ik weet dat de hardware het wel doet.

De bedoeling is dus bij de atmel dat hij een adres (bijvoorbeeld 6 ) en de daarbij behorende data (bijvoorbeeld 4) krijgt. De Atmel schakelt dan het relais met de decimale waarde 4 aan. Tevens leest de Atmel de ingangen bij het geselecteerde adres in en stuurt die door naar de pc.

Hier een foto van de besturing:
Image

Met het compoort analyse programma PortMon zie ik wel verschillen.
Met mijn programma:
* decimaal 6 versturen = 36 met de HEX instelling in Portmon
* decimaal 6 versturen = 6 met de ASCII instelling in Portmon

Met Microridge:
* decimaal 6 versturen = 06 met de HEX instelling in Portmon
* decimaal 6 versturen = . met de ASCII instelling in Portmon

Hieronder het Visual basic programma:
Image
https://4.bp.blogspot.com/-eE4bIIwh2gQ/ ... VBprog.jpg

Hieronder een uitdraai van portmon. En je ziet dat ik meerdere bytes heb verzonden. :
Code: Select all
compoorttest31-8-16   eigen programma werkt niet.


0.00006761   compoort-test29   IRP_MJ_CREATE   Serial0   SUCCESS   Options: Open    
0.00000307   compoort-test29   IOCTL_SERIAL_GET_PROPERTIES   Serial0   SUCCESS      
0.00000363   compoort-test29   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_BAUD_RATE   Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_LINE_CONTROL   Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_CHARS      Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_HANDFLOW   Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_BAUD_RATE   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_LINE_CONTROL   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_CHARS      Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_HANDFLOW   Serial0   SUCCESS      
0.00000810   compoort-test29   IOCTL_SERIAL_SET_BAUD_RATE   Serial0   SUCCESS   Rate: 9600   
0.00000391   compoort-test29   IOCTL_SERIAL_SET_RTS      Serial0   SUCCESS      
0.00000419   compoort-test29   IOCTL_SERIAL_CLR_DTR      Serial0   SUCCESS      
0.00000307   compoort-test29   IOCTL_SERIAL_SET_LINE_CONTROL   Serial0   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00000168   compoort-test29   IOCTL_SERIAL_SET_CHAR      Serial0   SUCCESS   EOF:1a ERR:0 BRK:0 EVT:1a XON:11 XOFF:13   
0.00000587   compoort-test29   IOCTL_SERIAL_SET_HANDFLOW   Serial0   SUCCESS   Shake:0 Replace:40 XonLimit:1024 XoffLimit:1024   
0.00000140   compoort-test29   IOCTL_SERIAL_GET_BAUD_RATE   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_LINE_CONTROL   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_CHARS      Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_HANDFLOW   Serial0   SUCCESS      
0.00000838   compoort-test29   IOCTL_SERIAL_SET_BAUD_RATE   Serial0   SUCCESS   Rate: 9600   
0.00000419   compoort-test29   IOCTL_SERIAL_SET_RTS      Serial0   SUCCESS      
0.00000391   compoort-test29   IOCTL_SERIAL_CLR_DTR      Serial0   SUCCESS      
0.00000279   compoort-test29   IOCTL_SERIAL_SET_LINE_CONTROL   Serial0   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00000140   compoort-test29   IOCTL_SERIAL_SET_CHAR      Serial0   SUCCESS   EOF:1a ERR:0 BRK:0 EVT:1a XON:11 XOFF:13   
0.00000251   compoort-test29   IOCTL_SERIAL_SET_HANDFLOW   Serial0   SUCCESS   Shake:0 Replace:40 XonLimit:1024 XoffLimit:1024   
0.00000419   compoort-test29   IOCTL_SERIAL_CLR_DTR      Serial0   SUCCESS      
0.00000140   compoort-test29   IOCTL_SERIAL_GET_BAUD_RATE   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_LINE_CONTROL   Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_CHARS      Serial0   SUCCESS      
0.00000112   compoort-test29   IOCTL_SERIAL_GET_HANDFLOW   Serial0   SUCCESS      
0.00000782   compoort-test29   IOCTL_SERIAL_SET_BAUD_RATE   Serial0   SUCCESS   Rate: 9600   
0.00000419   compoort-test29   IOCTL_SERIAL_CLR_RTS      Serial0   SUCCESS      
0.00000419   compoort-test29   IOCTL_SERIAL_CLR_DTR      Serial0   SUCCESS      
0.00000251   compoort-test29   IOCTL_SERIAL_SET_LINE_CONTROL   Serial0   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00000112   compoort-test29   IOCTL_SERIAL_SET_CHAR      Serial0   SUCCESS   EOF:1a ERR:0 BRK:0 EVT:1a XON:11 XOFF:13   
0.00000559   compoort-test29   IOCTL_SERIAL_SET_HANDFLOW   Serial0   SUCCESS   Shake:0 Replace:0 XonLimit:1024 XoffLimit:1024   
0.00000419   compoort-test29   IOCTL_SERIAL_CLR_RTS      Serial0   SUCCESS      
0.00000168   compoort-test29   IOCTL_SERIAL_SET_TIMEOUTS   Serial0   SUCCESS   RI:-1 RM:-1 RC:-2 WM:0 WC:0   
0.00000307   compoort-test29   IOCTL_SERIAL_SET_WAIT_MASK   Serial0   SUCCESS   Mask: RXCHAR RXFLAG CTS DSR RLSD BRK ERR RING    
0.00000168   compoort-test29   IOCTL_SERIAL_SET_QUEUE_SIZE   Serial0   SUCCESS   InSize: 1000 OutSize: 1000   
37.80507243   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00002235   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 36    <= portmon op HEX
0.00001956   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 34    <= portmon op HEX
0.00000391   compoort-test29   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
11.97564551   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00003185   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 6   <=portmon op ASCII
0.00002291   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 4   <=portmon op ASCII
0.00000419   compoort-test29   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
13.64046883   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00002822   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 4   <=portmon op ASCII
0.00002989   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 2: 64   <=portmon op ASCII
0.00000391   compoort-test29   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
4.86393829   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00002375   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 6   <=portmon op ASCII
0.00000363   compoort-test29   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.69714922   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00002989   compoort-test29   IRP_MJ_WRITE         Serial0   SUCCESS   Length 2: 15   <=portmon op ASCII
0.00000391   compoort-test29   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
26.03316008   compoort-test29   IOCTL_SERIAL_WAIT_ON_MASK   Serial0   SUCCESS      
0.00000978   compoort-test29   IRP_MJ_FLUSH_BUFFERS      Serial0   SUCCESS      
0.00001537   compoort-test29   IOCTL_SERIAL_SET_WAIT_MASK   Serial0   SUCCESS   Mask:    
0.00000475   compoort-test29   IOCTL_SERIAL_CLR_DTR      Serial0   SUCCESS      
0.00000168   compoort-test29   IRP_MJ_FLUSH_BUFFERS      Serial0   SUCCESS      
0.00000307   compoort-test29   IOCTL_SERIAL_PURGE      Serial0   SUCCESS   Purge: RXABORT RXCLEAR   
0.00000168   compoort-test29   IOCTL_SERIAL_PURGE      Serial0   SUCCESS   Purge: TXABORT TXCLEAR    
0.00000251   compoort-test29   IRP_MJ_CLEANUP         Serial0   SUCCESS      
0.00031037   compoort-test29   IRP_MJ_CLOSE         Serial0   SUCCESS   


**************************************************************************************************************************
*************************************************************************************************************************

MicroRidge    **** met programma doet hij wel. ******

0.00006090   ComTestSerial.e   IRP_MJ_CREATE   Serial0   SUCCESS   Options: Open    
0.00000838   ComTestSerial.e   IOCTL_SERIAL_SET_QUEUE_SIZE   Serial0   SUCCESS   InSize: 65536 OutSize: 65536   
0.00000168   ComTestSerial.e   IOCTL_SERIAL_SET_TIMEOUTS   Serial0   SUCCESS   RI:-1 RM:0 RC:0 WM:0 WC:0   
0.00000112   ComTestSerial.e   IOCTL_SERIAL_GET_BAUD_RATE   Serial0   SUCCESS      
0.00000112   ComTestSerial.e   IOCTL_SERIAL_GET_LINE_CONTROL   Serial0   SUCCESS      
0.00000140   ComTestSerial.e   IOCTL_SERIAL_GET_CHARS      Serial0   SUCCESS      
0.00000140   ComTestSerial.e   IOCTL_SERIAL_GET_HANDFLOW   Serial0   SUCCESS      
0.00000838   ComTestSerial.e   IOCTL_SERIAL_SET_BAUD_RATE   Serial0   SUCCESS   Rate: 9600   
0.00000419   ComTestSerial.e   IOCTL_SERIAL_SET_RTS      Serial0   SUCCESS      
0.00000447   ComTestSerial.e   IOCTL_SERIAL_SET_DTR      Serial0   SUCCESS      
0.00000279   ComTestSerial.e   IOCTL_SERIAL_SET_LINE_CONTROL   Serial0   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00000168   ComTestSerial.e   IOCTL_SERIAL_SET_CHAR      Serial0   SUCCESS   EOF:d ERR:ff BRK:ff EVT:ff XON:11 XOFF:13   
0.00000838   ComTestSerial.e   IOCTL_SERIAL_SET_HANDFLOW   Serial0   SUCCESS   Shake:1 Replace:80000040 XonLimit:100 XoffLimit:100   
0.00000223   ComTestSerial.e   IOCTL_SERIAL_SET_WAIT_MASK   Serial0   SUCCESS   Mask: RXCHAR TXEMPTY    
0.00000363   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000475   ComTestSerial.e   IOCTL_SERIAL_SET_DTR      Serial0   SUCCESS      
0.00000503   ComTestSerial.e   IOCTL_SERIAL_SET_RTS      Serial0   SUCCESS      
0.00001006   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000196   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
      
0.00000279   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000698   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00002319   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: .     <= portmon op ASCII
0.00000754   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000223   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
   
0.00002067   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: .     <= portmon op ASCII
0.00000419   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000223   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000196   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000419   ComTestSerial.e   IRP_MJ_READ         Serial0   SUCCESS   Length 1: .     <= portmon op ASCII
0.00000698   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000307   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
   
0.00000251   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000251   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00001928   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 06      <= portmon op HEX
0.00000391   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000168   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
      
0.00001983   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 04       <= portmon op HEX
0.00000643   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000251   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000140   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000419   ComTestSerial.e   IRP_MJ_READ         Serial0   SUCCESS   Length 1: 00      <= portmon op HEX
0.00000531   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000196   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
      
0.00002179   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 06       <= portmon op HEX
0.00000335   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000168   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
      
0.00002011   ComTestSerial.e   IRP_MJ_WRITE         Serial0   SUCCESS   Length 1: 02      <= portmon op HEX
0.00000391   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000168   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000140   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS      
0.00000307   ComTestSerial.e   IRP_MJ_READ         Serial0   SUCCESS   Length 1: 00     <= portmon op HEX
0.00000391   ComTestSerial.e   IOCTL_SERIAL_GET_MODEMSTATUS   Serial0   SUCCESS      
0.00000223   ComTestSerial.e   IOCTL_SERIAL_GET_COMMSTATUS   Serial0   SUCCESS   



Dus zou iemand weten waardoor Microridge wel doet met het versturen van dezelfde decimale getallen als mijn programma?

Mijn dank zal groot zijn.

Olaf
olaf99
 
Posts: 2
Joined: Wed Aug 31, 2016 7:06 pm

Re: Visual basic compoort aansturen

Postby nieuw 2 » Thu Sep 01, 2016 11:45 am

Het verschil tussen het karakter 6 (=ASCII) en de hex waarde is je precies niet duidelijk. Het karakter 6, zoals jij verzend in VB heeft inderdaad 36 als hex waarde. https://nl.wikipedia.org/wiki/ASCII_%28tekenset%29 . In je Atmel ga je blijkbaar uit van de hex waarde. Anders zou het niet werken met MicroRidge.

Waarschijnlijk dien je in VB aan te geven dat je geen karakter door stuurt maar een hex waarde. In C wordt dit aangegeven als 0x06. Wat zoeken leert me dat dit in VB &H06 is. Let dus wel op dat 64 in hex &H40 wordt. Tenzij je ook daar de hex waarde hebt en dan is &H64=100
nieuw 2
 
Posts: 119
Joined: Thu Jan 02, 2014 3:28 pm

Re: Visual basic compoort aansturen

Postby olaf99 » Thu Sep 01, 2016 7:48 pm

Hallo

Bedankt. :D
Via een ander forum ook tips gekregen.

Het werkt nu. 15 naar kaart 4 en 64 naar kaart 6. Kaart telling trouwens van rechts naar links....

Image

Het lag dus aan mijn manier van declaratie noteren. Verder moeten ook die "()" en de "{}" toegevoegd worden anders werkt het niet. Ik had trouwens al met HEX een poging gedaan maar ik had dan de () en de {} vergeten.

enkele byte verzenden werkt wel met:

Dim data() As Byte = {&H4}
SerialPort2.Write(data, 0, 1)

werkt ook met:
Dim data() As Byte = {&H4}
SerialPort2.Write(data, 0, data.Length)

***************************************
2 bytes verzenden werkt met:

Dim bytes() As Byte = {&H6, &H4}
SerialPort2.Write(bytes, 0, bytes.Length)

***********************************

Zo nu kan ik eindelijk verder met programmeren.

Olaf
olaf99
 
Posts: 2
Joined: Wed Aug 31, 2016 7:06 pm


Return to Mijn schakeling werkt nog niet...

Who is online

Users browsing this forum: No registered users and 1 guest