VB si RS232
Last Updated: Jun 21 2010 16:44, Started by
Wingyfeather
, Jun 18 2010 17:52
·
0
#1
Posted 18 June 2010 - 17:52
Buna
sunt student in sesiune si am de facut un proiect in care tre sa afisez turatia unui motor reglata d un regulator pid.Proiectul il fac cu un coleg..el s-a ocupat d partea hardware eu tre sa fac softul. Ca sa pot face graficul in timp real a turatiei reglate am folosit ( la cerintele profesorului) visual basic. Sunt cam incepator si m-ar interesa care e comanda unui buton pentru a trimite controllerului o informatie Mai exact - am un buton de start si cand apas p el vreau sa trimit controllerului comanda care sa imi porneasca motorul -un alt buton de stop care sa imi opreasca motorul , mentionez ca valorile trimise sunt p 8 biti...hexadecimal Private Sub BaudRate_Click() If FormLoaded Then With MSComm1 .Settings = BaudRate.Text + ",N,8,1" End With End If End Sub Private Sub Start_Click() If FormLoaded Then MSComm1.Output = Chr$(1) ' aici cum as putea sa trimit 0x5B End If End Sub Private Sub Stop_Click() If FormLoaded Then MSComm1.Output = 0x5A End If End Sub |
#2
Posted 18 June 2010 - 23:13
MSComm1.Output = Chr$(&H5B)' Asta daca nu stii cum se specifica in hexa (pui &H in fata reprezentarii hexa). |
#3
Posted 19 June 2010 - 14:17
ahaa..ma gandeam ca si asta ar fi o forma..desi cam greu cu declararea in vb
static const BYTE baEnableScan[ 1] = {0x5A}; |
#4
Posted 19 June 2010 - 14:49
si daca as avea un buton pentru a mari turatia motorului..."+"..cand apas vreau sa transmit un semnal controllerului ..pot scrie astfel codul ?
Private Sub TurPlus_Click() 'butonul de "+" If FormLoaded Then IntValue = Val(ComboValues.Text) IntValue = IntValue + 1 MSComm1.Output = Chr$(IntValue) End If ma intereseaza daca exista o alta forma d scriere a codului..gen " If "apasa buton " atunci mareste turatia decat If "incarca formular" atunci modiufica turatia " |
#5
Posted 19 June 2010 - 14:52
Ce treaba are formularul aici? E clar ca nu poti apasa pe buton cat timp nu ai form'ul incarcat.
Private Sub TurPlus_Click() MSComm1.Output = Chr(Val(ComboValues.Text)+1) End SubNu e suficient? Edited by dani.user, 19 June 2010 - 14:52. |
#6
Posted 19 June 2010 - 21:05
dani.user, on 19th June 2010, 15:52, said: Ce treaba are formularul aici? E clar ca nu poti apasa pe buton cat timp nu ai form'ul incarcat. Private Sub TurPlus_Click() MSComm1.Output = Chr(Val(ComboValues.Text)+1) End SubNu e suficient? Ai dreptate..ma luase valul mai am intrebari... pentru butonul d pornire ..start...trimit semnal controllerului apoi acesta asteapta o valoare de turatie. am un combo box cu turatia si un buton de start..vreau sa fac in asha fel incat: - ar trebui facut o chestie, ca atunci cand dau start sa nu ia in considerare alte butoane, ci sa ia doar valorile de turatie din casuta pentru ca asa cum e acum, daca apas start si pe urma stop, o sa imi seteze turatia ca fiind valoarea butonului de stop adica 0x5B |
#7
Posted 19 June 2010 - 22:05
buun.. si butonul de stop cand trebuie luat in considerare? 0x5B nu era start? sau poate dupa comanda de start trebuie trimisa imediat comanda de schimbare a turatiei?
|
#8
Posted 19 June 2010 - 22:41
#9
Posted 19 June 2010 - 23:36
pai cand apesi pe butonul ala in event handler-ul aferent, trimiti doua comenzi una dupa alta, ori independente ori le concatenezi (mscomm-ul accepta un string).
ceva in genul: MSComm1.Output = Chr(&H5B) & Chr(Val(ComboValues.Text))' sau ce combo ai tu acolo pentru viteza |
#10
Posted 20 June 2010 - 00:08
yey..da. ..scrisesem si eu cv asemanator intre timp
Next question: Cum afisez datele c vin pe serial port ? fiindca motorasul se cam opreste la turatia 20 daca dau cu "+"..o turatie mai amre introdusa merge... ASta e codul pentru comanda Public Sub MSComm1_OnComm() Buffer = "" If MSComm1.CommEvent = comEvReceive Then Buffer = Left(MSComm1.Input, 1) If Buffer <> "" And LastValue <> Buffer Then value = Asc(Buffer) Tur.Text = Str(value) LastValue = Buffer Form1.Refresh End If End If End Sub Preferabil..as vrea sa afisez undeva...ce imi recoamndati sa fac un camp d text..sau sa afisez ca mesaj datele ? si cum sa fac asta ? Va multumesc pana acum..raspunsurile voastre chiar m-au ajutat |
|
#11
Posted 20 June 2010 - 14:01
vezi ca textboxul are o proprietate multiline pe care o setezi pe true si o proprietate scrollbars pe care o pui pe vertical, dupa care redimensionezi acel textbox cat ai tu nevoie.
In timpul rularii cele doua proprietati sunt read-only deci va trebui sa le setezi valoarea in design-time. apoi in cod pui ceva de genul Tur.SelText = Str(value) & vbCrLf astfel fiecare caracter primit pe seriala va fi afisat in acel textbox pe un singur rand. |
#12
Posted 21 June 2010 - 14:53
Foarte tare !
Cum se rezolva aplicarea de butoane de maximize si minimize la form ? ...ca am incercat acest lucru (pura curiozitate) si nu mi-a iesit sa le adaug la bara d titlu. |
#13
Posted 21 June 2010 - 16:44
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users