Avatar billede driis Nybegynder
25. februar 2001 - 20:18 Der er 11 kommentarer og
1 løsning

Læse status på COM port / Sende til COM port

Jeg har et stykke elektronik, som gerne skulle kunne arbejde sammen med et Visual Basic - program.

Elektronikken fungererer på den måde, at der statisk udsendes en 6 bits kode, som kun ændres en gang imellem, når mit hardware reagerer på ydre ændringer. Hvordan kan jeg aflæse disse 6 bits i mit VB-program? Kodeeksempler modtages gerne.

Ligeledes vil jeg gerne vide, hvordan jeg kan skrive til COM porten med VB - igen skal jeg helst kunne \'opretholde\' et antal bits i et tidsrum.

Endelig har jeg brug for en oversigt over benene i en COM port.
Avatar billede tdaugaard Nybegynder
25. februar 2001 - 23:02 #1
Okay .. MSComm er helt udelukket for den har du sikkert prøvet uden held ..
jeg lytter lige med ..
Avatar billede scb Praktikant
26. februar 2001 - 08:44 #2
Alt om Serielle porte: http://www.beyondlogic.org/serial/serial.htm#2

Hvis jeg har forstået det rigtigt, kan du ikke bruge den normale data input i en seriel port (RXD) da dit dataformat ikke er 8 bit og din baud rate sikkert heller ikke er standard.

Typisk vil man derfor bruge et af kontrolbenene i den serielle port, og så skrive sine egne rutiner, eller også ændre man sin hard-ware sådan at det snakker rigtigt serielt, evt ved at bruge et lille print med en 20 Kr\'s microprocessor på (med program der passer til opgaven), som konverterer til alm. seriel communikation.

Hvor tit udsender din elektronik den 6 bits kode, og med hvilken hastighed ?, dette er afgørende for om man skal have et lille print som mellemled eller det kan modtages vha. et af kontrolbenene.

-SCB
Avatar billede driis Nybegynder
27. februar 2001 - 11:55 #3
Måske ville det være nemmest at lave lidt om på hardwaren, eller lave endnu et print som mellemled, som du er inde på - hvor kan jeg finde info om, hvordan jeg kan sende data til computeren med RXD benet? Og en beskrivelse af RS232?
Avatar billede scb Praktikant
27. februar 2001 - 12:20 #4
De fleste PC\'ere har i dag 9 pol sub-d stik som seriel port.
Hvis du i stikket forbinder  ben 4, 6 og 1 sammen, og ben 7 og 8 sammen kan du sende og modtage data uden at tænke på handshake, så vil du få data ud på ben 3 og kunne modtage data på ben 2, hvor ben 5 er fælles stel.
DVS hvis du som test derfor forbinder ben 2 og 3 sammen, vil du sende data til dig selv, på denne måde kan du afprøve kommunikationen.
I VB skal du bruge MSComm hvor du sætter port nr, baud hastighed, mm.
Så åbner du porten i dit program med MSComm.PortOpen = True
og sender med MSComm.Output = \"Hej\"  ;Sender Hej serielt.
For at modtage:
MSComm.InBufferCount er et register for hvor mange tegn der er modtaget serielt.
For at hente data: Temp = MSComm.Input
-SCB
Avatar billede scb Praktikant
27. februar 2001 - 12:22 #5
Alt, om RS232: (Alt er virkelig beskrevet)
http://www.beyondlogic.org/serial/serial.htm
-SCB
Avatar billede berg Nybegynder
28. februar 2001 - 09:36 #6
Prøv at kigge på dette spm. :

http://www.eksperten.dk/spm/46270

.:Berg:.
Avatar billede driis Nybegynder
02. marts 2001 - 16:01 #7
Kører MSComm som default full duplex? Hvordan ændres det?

Hvis man vil sende en streng til noget HW forbundet til COM porten, er der så en karakter, man normalt bruger for at signalere \'streng-slut\'?
Avatar billede scb Praktikant
02. marts 2001 - 16:25 #8
Som default kan der både sendes og modtages samtidig, men man behøver ikke at gøre det.

Det er meget forskelligt hvad der bruges som \'streng-slut\'
Nogle bruger VbLfCr (ascii 10 og 13)
Andre Ascii 20 (DC4)
Skal det være rigtigt godt:
Ascii 02 (STX) = Start telegram
Ascii 03 (ETX) = End telegram
Hvorefter modtageren svarer:
Ascii 06 (ACK) = Telegram forstået
eller
Ascii 15 (NAK) = Telegram ikke forstået

-SCB
Avatar billede driis Nybegynder
03. marts 2001 - 12:51 #9
Jeg er ved at undersøge om jeg kan lave om på mit hardware, eller hvordan  jeg ellers skal løse problemet. Derfor får dette spørgsmål lige lov at stå et par dage, før jeg accepterer; jeg håber dét er OK. (Der kan måske blive tale om at jeg skal kommunikere med parallelporten i stedet.)
Avatar billede driis Nybegynder
15. marts 2001 - 23:44 #10
Nu har jeg vist snart fået nok ud af dé 150 points... Men anyways: (Jeg skal nok snart acceptere)

Kan man få MSComm kontrollen til at generere en event, når den modtager en ascii 13 karakter?

Hvis ikke, hvordan får jeg så nemmest de data, jeg modtager, puttet ind i et array? De forskellige strings adskilles af ascii 13 / Chr$(13)
Avatar billede scb Praktikant
17. marts 2001 - 10:18 #11
I en Timer control med et fornuftigt interval kunne du gøre følgende:

Oprette en variabel Temp som Public

If MSComm.InBufferCount = 0 Then Exit Sub

Temp = Temp & MSComm.Input

If Right(Temp,1) = Chr(13) Then \'Er sidst modtaget tegn Ascii 13

Her er dine data i Temp
Husk at sætte Temp = \"\" når du har behandlet data

End If

Det burde kunne virke.

-SCB


Avatar billede scb Praktikant
17. marts 2001 - 10:20 #12
UPS variablen Temp skal selvfølig ikke stå i timer controllen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester