Avatar billede christian_h Nybegynder
11. maj 2003 - 14:41 Der er 5 kommentarer og
1 løsning

MSComm sende og modtage

Hej Alle.

Jeg skal gøre følgende:
Opgave 1:
sende "P"
vente til der biver returnertet <CR>
sende "e"
vente til der biver returnertet <CR>
Sende "L"
vente til der biver returnertet <CR>
slut

Opgave 2:
Sende "V"
læse resultatet og vise det i text1
slut

Hvordan gøres dette med MSComm1 ??, jeg har sat Mscomm op med porte og alt det der, men resten kan jeg ikke lige gennemskue.

Mvh.

Christian_h
Avatar billede dk_akj Nybegynder
12. maj 2003 - 09:25 #1
Noget som dette måske ??

En form med 2 commandbuttons, en mscomm control og en textbox.

//akj

Private gdone As Boolean


Private Sub Command1_Click()

gdone = False
MSComm1.InBufferSize = 1

MSComm1.PortOpen = True

done = False
ret = ""
MSComm1.Output = "p"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

done = False
ret = ""
MSComm1.Output = "e"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

done = False
ret = ""
MSComm1.Output = "L"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True


done = False
ret = ""
MSComm1.Output = "V"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

MSComm1.PortOpen = False


End Sub

Private Sub Command2_Click()
    gdone = True
End Sub

Private Sub Form_Load()
Command1.Caption = "Send"
Command2.Caption = "Afbryd"
End Sub
Avatar billede christian_h Nybegynder
13. maj 2003 - 21:22 #2
Hej dk_akj.

Undskyld den lange svartid, det er næsten rigtigt det du har lavet til mig, men opgave 1 og 2 skal være på 2 sperate command knapper, kan du lave det om til det ??.

Hvorfor, skal der være en afbryd knap ??, hvad er formålet med gdone ??.

Mvh.

Christian_h
Avatar billede christian_h Nybegynder
13. maj 2003 - 21:23 #3
PS. resultatet der kommer tilbage fra comporten i opgave 2 vil være mellem 1 og 10 karaketere.
Avatar billede dk_akj Nybegynder
14. maj 2003 - 07:28 #4
Afbryd knappen er beregnet til at afbryde de loop's der er i programmet hvis den enhed du har tilsluttet com-porten ikke svarer.

' loop intil cr er modtaget eller der er trykket afbryd
"Loop Until done = True Or gdone = True"

gdone er en global variabel der bruges ifm. afbrydelse.

//akj



' start på kode
Private gdone As Boolean


Private Sub Command1_Click()

Command3.Enabled = False

gdone = False
MSComm1.InBufferSize = 1

MSComm1.PortOpen = True

done = False
ret = ""
MSComm1.Output = "p"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

done = False
ret = ""
MSComm1.Output = "e"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

done = False
ret = ""
MSComm1.Output = "L"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents

    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True



MSComm1.PortOpen = False

Command3.Enabled = True
End Sub

Private Sub Command2_Click()
    gdone = True
End Sub

Private Sub Command3_Click()
Command1.Enabled = False
gdone = False
MSComm1.InBufferSize = 1

MSComm1.PortOpen = True

done = False
ret = ""
MSComm1.Output = "V"

Do

    ret = ret & MSComm1.Input
    Text1.Text = ret
    DoEvents
' cr erstattes med den karakter der indikerer at alle karakterer er sendt fra engheden
    If InStr(1, ret, "<cr>") > 0 Then
        done = True
    End If

Loop Until done = True Or gdone = True

MSComm1.PortOpen = False
Command1.Enabled = True

End Sub

Private Sub Form_Load()
Command1.Caption = "Opgave 1"
Command2.Caption = "Afbryd"
Command3.Caption = "Opgave 3"
End Sub
Avatar billede christian_h Nybegynder
14. maj 2003 - 10:59 #5
Takker for hjælpen.

Mvh.
Christian_h
Avatar billede dk_akj Nybegynder
14. maj 2003 - 11:00 #6
Selvtak

//akj
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