Mam problem z napisaniem aplikacji w VB do obsługi RS'a. Może akurat znajdzie się ktoś kto mi pomoże Wink
Zrobiłem sobie sterownik który po naciśnięciu przycisku wystawia na port RS zmienną o wartości z przedziału 1-1023. W programie w komputerze jest sobie okienko tekstowe TextBox w które jest wczytywana wartość przeczytana z portu. Jeżeli naprzykład zmienna ma wartość 43 to jak nacisne przycisk to wysyłany jest nieskończony ciąg liczbowy 4343434343434343 który przestaje być wysyłany w momencie puszczenia przycisku. Okienko zablokowałem sobie na pocztek na 2 znaki no i jak ze sterownika przychodzi wartość 1 to w okienku mam 11
, a powinno być 1.Jeżeli wysyłam 43 to w okienku potrafi się pojawić nawet 34, a jezeli przekrocze zakres dwuznakowy okienka i spowrotem wroce to wysylania zmiennej skladajacej się z dwoch znaków jak ta 43 to mam 34.
Próbowalem też ustawić żeby sterownik wysyłał zmienną w postaci p43k, gdzie literki p i k oznaczałyby odpowiednio poczatek i koniec zmiennej. Potem w programie kazałem:
1. wyczyścić okienko jak przyjdzie "p"
2. przeczytać kolejne dwa znaki
3. wyczyścić okienko jak przyjdzie "k"
i też nie bardzo chcialo działać.
Po kilku modyfikacjach osiągnąłem kod:
Ale on również nie zawsze czyta mi dane tak jak powinien, czasem przy odczytywaniu z portu "1" przeczyta "1" a czasem "1111"
Ustawianie wartości w sterowniku z poziomu komputera działa poprawnie. Tylko mam problem z odbiorem.
Może ktoś się na tym zna i byłby w stanie mi pomóc? Chciałby później mieć możliwość podstawienia tej zmiennej do paska postępu żeby mieć w zależności od wartośći zmiennej rózne zapełnienie tego paska.
W terminalu nie mam problemów z odczytywaniem poprawnej wartości więc najprawdopodobniej błędnie korzystam z portu w VB, ale co robie źle to nie mam pojęcia.
Zrobiłem sobie sterownik który po naciśnięciu przycisku wystawia na port RS zmienną o wartości z przedziału 1-1023. W programie w komputerze jest sobie okienko tekstowe TextBox w które jest wczytywana wartość przeczytana z portu. Jeżeli naprzykład zmienna ma wartość 43 to jak nacisne przycisk to wysyłany jest nieskończony ciąg liczbowy 4343434343434343 który przestaje być wysyłany w momencie puszczenia przycisku. Okienko zablokowałem sobie na pocztek na 2 znaki no i jak ze sterownika przychodzi wartość 1 to w okienku mam 11
Próbowalem też ustawić żeby sterownik wysyłał zmienną w postaci p43k, gdzie literki p i k oznaczałyby odpowiednio poczatek i koniec zmiennej. Potem w programie kazałem:
1. wyczyścić okienko jak przyjdzie "p"
2. przeczytać kolejne dwa znaki
3. wyczyścić okienko jak przyjdzie "k"
i też nie bardzo chcialo działać.
Po kilku modyfikacjach osiągnąłem kod:
Private Sub Command2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub
Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = False
End Sub
Private Sub Command3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer2.Enabled = True
End Sub
Private Sub Command3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer2.Enabled = False
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 'comm port no.
MSComm1.Settings = "9600,N,8,1" 'Port Settings
MSComm1.RThreshold = 4
MSComm1.InputLen = 4
MSComm1.PortOpen = True
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Private Sub MSComm1_OnComm()
Text1.Text = MSComm1.Input
End Sub
Private Sub Timer1_Timer()
MSComm1.Output = "A"
End Sub
Private Sub Timer2_Timer()
MSComm1.Output = "B"
End Sub
Ale on również nie zawsze czyta mi dane tak jak powinien, czasem przy odczytywaniu z portu "1" przeczyta "1" a czasem "1111"
Ustawianie wartości w sterowniku z poziomu komputera działa poprawnie. Tylko mam problem z odbiorem.
Może ktoś się na tym zna i byłby w stanie mi pomóc? Chciałby później mieć możliwość podstawienia tej zmiennej do paska postępu żeby mieć w zależności od wartośći zmiennej rózne zapełnienie tego paska.
W terminalu nie mam problemów z odczytywaniem poprawnej wartości więc najprawdopodobniej błędnie korzystam z portu w VB, ale co robie źle to nie mam pojęcia.