Witam Panów
Czytałem całe zagadnienie, mam chyba podobny problem.
Napisałem program w VB komunikacja odbywa sie po RS232 do uC Atmega8 Tu natomiast program jest napisany w bascomie.
I co sie okazuje Program VB prawidłowo wysyła komunikaty jednak zle one są odbierane przez bascoma?? Co jest nie wiem. Wszystko jest ustawione tak jak powinno przesle do analizy wycinek progrmu :
VB :
...
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
MSComm1.PortOpen = True
end sub
...
'W LEWO
Private Sub Command10_Click()
If (Form1.Picture11.Visible = False) Then
MSComm1.Output = "W1" & Chr(13) & Chr(10)
MSComm1.Output = "W2" & Chr(13) & Chr(10)
MSComm1.Output = "W4" & Chr(13) & Chr(10)
ElseIf (Form1.Picture11.Visible = True) Then
MSComm1.Output = "S0" & Chr(13) & Chr(10)
End If
If (Form1.Picture11.Visible = True) Then
Form1.Picture11.Visible = False
ElseIf (Form1.Picture11.Visible = False) Then
Form1.Picture11.Visible = True
End If
End Sub
'PLAY
Private Sub Command11_Click()
If (Form1.Picture12.Visible = False) Then
MSComm1.Output = "S3" & Chr(13)
ElseIf (Form1.Picture12.Visible = True) Then
MSComm1.Output = "S0" & Chr(13)
End If
If (Form1.Picture12.Visible = True) Then
Form1.Picture12.Visible = False
ElseIf (Form1.Picture12.Visible = False) Then
Form1.Picture12.Visible = True
End If
End Sub
...
to jest napisane w VB
a w bascomie ( odbiór danych)
$regfile = "m8def.dat"
$crystal = 8000000 ' Kwarc zewnętrzny8MHz
$baud = 9600
'Baud = 9600
Echo Off
'******** KONFIGURACJA WYŚWIETLACZA LCD *********************************************************************
Config Lcd = 16 * 2 ' Deklaracja wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Initlcd ' Inicjalizacja wyświetlacza LCD
Cls ' Czyszczenie
Cursor Off
Cursor Noblink
'******** KONFIGURACJA MAGISTRALI I2C ***********************************************************************
Config Sda = Portb.1 ' Sda
Config Scl = Portb.0 ' Scl
'******** USTAWIENIA POCZĄTKOWE *****************************************************************************
'Portd.6 = 1 'S1
'Portd.7 = 1 'S2
'Wyzerowanie wyjść expanderów
I2csend 64 , &B11111111
I2csend 66 , &B11111111
I2csend 70 , &B11111111
I2csend 78 , &B11111111
I2csend 74 , &B00011111
'******** DEKLARACJE ZMIENNYCH ******************************************************************************
Dim I As Byte
Dim Kod As String * 8
'******** DEKLARACJE PROCEDUR *******************************************************************************
'Brak
'******** PROGRAM GŁÓWNY ************************************************************************************
Cls
Lcd "Ok..."
Wait 2
Cls
Locate 1 , 1 : Lcd " Sterownik DVD "
Locate 2 , 1 : Lcd " RS 232 "
Wait 2
Locate 1 , 1 : Lcd " sterownik v1.1 "
Locate 2 , 1 : Lcd " Wersja testowa "
Do
'Locate 1 , 1 : Lcd " sterownik v1.1 "
'Locate 2 , 1 : Lcd " Wersja testowa "
If Ischarwaiting() <> 0 Then
Cls
Kod = ""
Input Kod
Cls
Locate 1 , 1
Lcd " KOD STEROWANIA "
Locate 2 , 1
Lcd Kod
' Wait 2
'DVD-1
Select Case Kod
Case "C1"
I2csend 64 , &B11111110
Locate 2 , 1
Lcd Kod ; " - DVD - 1 "
Waitms 100
I2csend 66 , &B11111110
Locate 2 , 1
Lcd Kod ; " - REC "
Waitms 100
I2csend 64 , &B11111111
I2csend 66 , &B11111111
Locate 2 , 1
Lcd Kod ; " - KASOWANIE "
'Waitms 200
'End Select
...
Ciekawe co jest powodem!
Jeszcze jedno ten problem jest w momęcie kiedy pokolei wysylam informacje lub bardzo szybko naduszam przyciski w programie napisany,które wysyłają komędy.
proszę o pomoc.