[vb5] een nul versturen over de compoort *

Pagina: 1
Acties:

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
ik heb een programma geschreven dat een seriele muis kan simuleren.
alleen als ik een nul probeer te versturen, verstuurt hij nix :?
ik probeer het nu met chr$(0). maar t werkt niet
er is geen handschaking, dus spelen met die lijntjes is er ook niet bij.
iemand een nuttige tip hoe ik die nul verstuur?

met de standaart ocx mscommcontrol werkt het zowieso niet :?
ik geberuik nu cheapcomm

[ Voor 13% gewijzigd door Super_ik op 14-10-2004 17:05 ]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:21

gorgi_19

Kruimeltjes zijn weer op :9

Voor de duidelijkheid; het betreft hier VB6?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Met een standaard mscommcontrol zou het gewoon moeten werken, zie uitleg hieronder. Lukt het daarmee wel 'gewone' data te sturen?

Let op: voor zowel VB als MSCOMM is een Chr$(0) niets meer dan een gewoon karakter (VB gebruikt geen null-terminated-strings, maar houdt gewoon zelf de lengte bij). Misschien dat het apparaat/de software aan de andere kant er meer moeite mee heeft?

[ Voor 24% gewijzigd door Kuhlie op 14-10-2004 17:21 . Reden: iets voorzichtiger geformuleerd... ]


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
het gaat hier over vb5
het apparaat aan de andere kant is een door mij geprogrammeerde microcontrollor. Die met een echte muis wel doet wat ik verwacht.
ik krijg in visual basic nix gelezen of geschreven op 1200 baud. Hyperterminal lukt het wel.
met cheapcomm kan ik verder wel elk willekeurig getal van 1 to 255 schrijven.

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:21

gorgi_19

Kruimeltjes zijn weer op :9

Dan zet ik VB5 even in de titel er bij :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

misschien een dom iets maar is het niet mogelijk om bij de kaart overal 1 af te halen dus 1=0 en 2=1 enz. ?

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
maar dan klopt het protocol niet meer. een muis kan het toch ook versturen?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Super_ik schreef op 14 oktober 2004 @ 17:35:
met cheapcomm kan ik verder wel elk willekeurig getal van 1 to 255 schrijven.
CheapComm is vast geschreven in C(++) ;)
Super_ik schreef op 14 oktober 2004 @ 17:35:
ik krijg in visual basic nix gelezen of geschreven op 1200 baud. Hyperterminal lukt het wel.
Ah, het probleem is dus niet dat je geen Chr$(0) kan schrijven, maar dat je niet weet hoe je wat-dan-ook moet schrijven... (dan is je titel dus eigenlijk fout, maar dat terzijde).

Eigenlijk moet ik je bestraffend toespreken, omdat je de help niet hebt gelezen... maar in plaats daarvan ben ik (veel te) lief:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit

Private Sub Form_Load()
  MSComm1.CommPort = 3    'COM3
  MSComm1.RThreshold = 1  'zodra er 1 byte is binnengekomen 
                           'wordt de OnComm-event gegooid
  MSComm1.PortOpen = True 'zet de poort open
  
  'De help zegt:
  '       "To send binary data, you must pass
  '       a Variant which contains a byte array
  '       to the Output property."
  'ofwel: lees de help!
  Dim data As String
  data = "AT" & vbCr
  Dim dataByteArray() As Byte
  dataByteArray = StrConv(data, vbFromUnicode)
  MSComm1.Output = dataByteArray
End Sub

Private Sub MSComm1_OnComm()
  'De help zegt:
  '         "The InputMode property determines the
  '         type of data that is retrieved with
  '         the Input property.
  '         (...)
  '         If InputMode is comInputModeBinary then
  '         the Input property returns binary data
  '         in an array of bytes in a Variant.
  Dim dataByteArray() As Byte
  MSComm1.InputMode = comInputModeBinary
  dataByteArray = MSComm1.Input
  Dim data As String
  data = StrConv(dataByteArray, vbUnicode)
  MsgBox data
End Sub

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20-05 17:44
[edit] dank u wel, het werkt :)

[ Voor 91% gewijzigd door Super_ik op 14-10-2004 19:03 ]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek

Pagina: 1