Avatar billede DTP Novice
07. december 2003 - 06:44 Der er 4 kommentarer og
1 løsning

Hjælp til kode

Jeg sidder og programmerer i vb, og stødt ind i nogle problemer:

1) Mit program "hænger" hvis jeg åbner det, ikke udfører noget og lukker det igen.

2) når min dowhile er kørt ÉN gang helt ned til goto så har jeg problemer med at få sat MsComm1.InBufferCount = 0, selv om jeg gør dette, så opfatter den det IKKE ???!!

3) når jeg gemmer i min logfil, så gemmer jeg ikke det jeg vil have som er :
SmsNR  1
Afsender: 4526208789  D.  03/12/07  Kl.  05:52:04  Kommando: St0

men får ISTEDET følgende:

SmsNR  1
Afsender: 4526208789  D.  03/12/07  Kl.  05:42:13  Kommando: St0

SmsNR  off      Relae_4: offAfsender:  D.    Kl.    Kommando:

Jeg bruger de SAMME variabler andre steder i koden og der indeholder de det "RIGTIGE" så jeg aner ikke hvordan den ekstra linie er kommet

***********************Her er mit kode*********************

Private Sub Form_Load()



MSComm1.commport = 1

'indstillinger for kommunikationen: 9600 Baud rate, ingen paritet, 8 databit, og 1 stop bit
MSComm1.settings = "9600,N,8,1"

'rts cts handshaking dvs hardware handshaking
MSComm1.Handshaking = comRTS


'Så skal porten åbnes

MSComm1.PortOpen = True

Timer1.Interval = 1000  ' i mS

End Sub

___________________________________________________________

Private Sub Timer1_Timer()
hej:


Timer1.Interval = 0


Do While MSComm1.InBufferCount = 0

DoEvents

Text4.BackColor = vbRed
Text4.Text = "Waiting.."


Loop


Text4.BackColor = vbGreen
Text4.Text = "Receiving.."



Sleep (1000) 

smsnr = Mid$(MSComm1.Input, 15) '& smsnr

MSComm1.Output = "at+cmgr=" & smsnr
Sleep (400) 

readsms = MSComm1.Input '& readsms 'læser hele sms'en

afsender = Mid$(readsms, 36, 10)

dato = Mid$(readsms, 50, 8)

tid = Mid$(readsms, 59, 8)

kommando = Mid$(readsms, 73, 3)

Sleep (500)




Filnummer = FreeFile
  Open "C:\log.txt" For Append As #Filnummer
  Print #Filnummer,
  Close #Filnummer


Filnummer = FreeFile
  Open "C:\log.txt" For Append As #Filnummer
  Print #Filnummer, vbCrLf & "SmsNR  " & smsnr & "Afsender: " & afsender & "  D.  " & dato & "  Kl.  " & tid & "  Kommando: " & kommando '& " Indhold: " & indhold

  Close #Filnummer

Sleep (500)
MSComm1.Output = "at+cmgd=" & smsnr & vbCr  'bliv her !! virker nu  FEJL IKKE HER !!!!!!!!!!
Sleep (400)



If Label1.BackColor = vbGreen Then
r1 = "on"
Else
  r1 = "off"
End If

If Label2.BackColor = vbGreen Then
r2 = "on"
Else
  r2 = "off"
End If

If Label3.BackColor = vbGreen Then
r3 = "on"
Else
  r3 = "off"
End If

If Label4.BackColor = vbGreen Then
r4 = "on"
Else
  r4 = "off"
End If





Select Case kommando




'**************Case tænd relæ 1**********************

Case "tr1"
Label1.BackColor = vbGreen
r1 = "on"
Form1.Text1.Text = Text1.Text & "  *****  Relæ_1 ON  " & "  D.  " & dato & "  Kl.  " & tid & "  AF:  " & afsender & "  ***** "


'***************Case tænd relæ 2************************

Case "tr2"
Label2.BackColor = vbGreen
r2 = "on"
Form1.Text1.Text = Text1.Text & "  *****  Relæ_2 ON  " & "  D.  " & dato & "  Kl.  " & tid & "  AF:  " & afsender & "  ***** "


'******************Case sluk relæ 1***********************

Case "sr1"
Label1.BackColor = vbRed
r1 = "off"
Form1.Text1.Text = Text1.Text & "  *****  Relæ_1 OFF " & "  D.  " & dato & "  Kl.  " & tid & "  AF:  " & afsender & "  ***** "


'**********************Case sluk relæ 2*******************

Case "sr2"
Label2.BackColor = vbRed
r2 = "off"
Form1.Text1.Text = Text1.Text & "  *****  Relæ_2 OFF " & "  D.  " & dato & "  Kl.  " & tid & "  AF:  " & afsender & "  ***** "

'****************Status For relæer***********************

Case "st0"

Form1.Text1.Text = Text1.Text & "*****  Status Request " & "  D.  " & dato & "  Kl.  " & tid & "  AF:  " & afsender & " **** "

MSComm1.Output = "at+cmgs=" & afsender & vbCr
Sleep (500)
MSComm1.Output = "Relae_1: " & r1 & "      Relae_2: " & r2 & Chr$(26)
Sleep (500)

End Select



MSComm1.InBufferCount = 0
'Det er som om denne linje ikke bliver udført  !?????

GoTo hej                   
'programmet springer fint op til hej:MEN så fortsætter det som om at mscomm1.inbuffercount > 0 ???! og jeg har LIIIIGE sat den til 0 !!


End Sub


___________________________________________________________


Private Sub exit_Click()

MSComm1.PortOpen = False

Unload Form1

End Sub

___________________________________________________________


Private Sub open_Click()


Form2.Show vbModal

End Sub

___________________________________________________________

'og i form2 står der følgende (Tror IKKE problemet ligger heromkring)

Private Sub Close_Click()
Unload Form2
End Sub

Private Sub Form_Load()

Open "c:\log.txt" For Input As #1

Do While EOF(1) = False

Line Input #1, Data

Text1.Text = Text1.Text & vbCrLf & Data

Loop

Close #1


End Sub
___________________________________________________________
Avatar billede DTP Novice
07. december 2003 - 06:52 #1
en lille tilføjelse

i punkt 2) der kan jeg se at mscomm1.inbuffercount bliver ved med at være > 0 EFTER at have kørt ÉN gang, da text4 forbliver 
Text4.BackColor = vbGreen
Text4.Text = "Receiving.."
Avatar billede DTP Novice
07. december 2003 - 09:10 #2
punkt 2) og 3) har jeg løst nu

NOGEN der har et forslag til punkt 1)  ????

hvad er det der får mit program til at hænge ????
Avatar billede joern Nybegynder
07. december 2003 - 10:04 #3
Hej.

Et program kan afsluttes på i hvert fald 3 måder:

1)  Deu kan klikke på krydset i titellinien
2)  Du kan taste ALT + F4
3)  Du kan have et menupunkt eller en knap, med kode til at lukke.

Jeg vil foreslå at du alle steder indsætter det magiske ord 'end'

Private Sub Form_Unload(Cancel As Integer)
  End
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  End
End Sub

M.v.h.  Jørn
Avatar billede DTP Novice
07. december 2003 - 17:45 #4
HEY TAK !!!

Okay du får pointene, selvom jeg kun burde give en 1/3 ud kun.

Men så holder du også øje med mig fremover og hjælper hvis du kan..ik'?? *G*

værsgo
Avatar billede joern Nybegynder
07. december 2003 - 20:36 #5
Hej.
Kniber det med point, kan jeg sende nogle retur.  Jeg har mange flere end jeg kan bruge.
I de gamle DOS-dage brugte jeg et pakke-program, der hedder ARJ.  Dér skrev programmøren i sin licens-tekst:  Send ingen penge, jeg har penge, men jeg vil gerne have beundring!
Det er nu ikke fordi jeg synes den med 'End' fordrer noget sådant, men ideologien synes jeg om.  Kender du http://www.frisoftware.dk  Jeg er medlem dér.

M.v.h. Jørn
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