Forum » Programiranje » COM in Visual Basic
COM in Visual Basic
ivek26 ::
Rad bi povezal mikrokontroler (89c2051) z računalnikom preko COM porta. Kako naj to izvedem v Visual basicu. Rad bi bral in pošiljal podatke. Prosim za pomoč. Lp
Tutankhamun ::
Ja, js nimam več VBja. Uglavnem moreš nastavt parametre
MSComm1.CommPort = 1
MSComm1.Settings = "19200,N,8,1"
Pol morš vrjetn odpret port
MSComm1.Open
Pol pa pošiljaš pa bereš.
Drgač sm pa neki najdu na teli strani čist spodi.
MSComm1.CommPort = 1
MSComm1.Settings = "19200,N,8,1"
Pol morš vrjetn odpret port
MSComm1.Open
Pol pa pošiljaš pa bereš.
Drgač sm pa neki najdu na teli strani čist spodi.
AMD Phenom QUAD 9950 Black Edition, 8GB
Nitro Tech ::
Za posiljanje podatkov naredi tole:
Tale koda je za null-modem kabel. Ce ne ves kaj je to si malo pogooglaj ali pa potem vprasaj. Za sprejemanje podatkov bos moral narediti podobno. Na kontrolerju moras imeti enake nastavitve UARTa (2400,N,8,1). Predlagam da ne zacnes z 19200 baud, ker lahko da ti cip ne bo podpiral te hitrosti. Za testiranje je 2400 cisto dovolj.
Private Sub Form_Load() MSComm1.CommPort = 1 ' Uporabi COM1. Obvezno, ce mas vec com portov na PC-ju MSComm1.Settings = "2400,N,8,1" ' 2400 baud, brez paritete, 8 data bitov, 1 stop bit MSComm1.DTREnable = False ' DTR linijo na low, da preprecis reset kontrolerja MSComm1.PortOpen = True ' sedaj odpres port End Sub Private Sub CmdSend_Click() MSComm1.Output = Chr$(DATA1) & Chr$(DATA2) & Chr(DATA3) ' poslali bomo 3 razlicne podatke iz spremenljivk End Sub ' Ce ti dela cip z nizkim taktom daj funkcijo posiljanja podatkov v zanko in ponovi ene parkrat. Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False ' Ko zapiras program (formo), zapri se vrata za sabo! End Sub
Tale koda je za null-modem kabel. Ce ne ves kaj je to si malo pogooglaj ali pa potem vprasaj. Za sprejemanje podatkov bos moral narediti podobno. Na kontrolerju moras imeti enake nastavitve UARTa (2400,N,8,1). Predlagam da ne zacnes z 19200 baud, ker lahko da ti cip ne bo podpiral te hitrosti. Za testiranje je 2400 cisto dovolj.
format c: najde vse viruse
Zgodovina sprememb…
- spremenil: Primoz ()
ivek26 ::
Sem probal tekole:
Private Sub Form_Load()
MSComm1.Settings = "4800,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 3
MSComm1.PortOpen = True
MSComm1.RThreshold = 3
End Sub
Private Sub MSComm1_OnComm()
Dim Data As String
Data = MSComm1.Input
Text1.Text = Data
End Sub
Podatke mi sicer bere,ampak malo čudno,v text boxu sta zraven podatka še dva znaka.Prikazovati bi moral samo številke zraven pa sta še dva "ll".
Kako lahko to rešim?
Private Sub Form_Load()
MSComm1.Settings = "4800,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 3
MSComm1.PortOpen = True
MSComm1.RThreshold = 3
End Sub
Private Sub MSComm1_OnComm()
Dim Data As String
Data = MSComm1.Input
Text1.Text = Data
End Sub
Podatke mi sicer bere,ampak malo čudno,v text boxu sta zraven podatka še dva znaka.Prikazovati bi moral samo številke zraven pa sta še dva "ll".
Kako lahko to rešim?
Tutankhamun ::
tista znaka sta carriage return in line feed (\r\n (0x0a 0x0d))
Pomeni da greš na začetek in v novo vrstico. Lahko pa preden izpišeš na zaslon, vrednost iz com porta vpišeš v spremenljivko pol pa v tej spremenljivki zbrišeš zadnja 2 znaka.
Pomeni da greš na začetek in v novo vrstico. Lahko pa preden izpišeš na zaslon, vrednost iz com porta vpišeš v spremenljivko pol pa v tej spremenljivki zbrišeš zadnja 2 znaka.
AMD Phenom QUAD 9950 Black Edition, 8GB
Tutankhamun ::
a kako, dobro vprašanje :).
Ker js ful mau delam u basicu, pa še to samo v excellu, ti bom dal en primer, sam nevem če je lih najbolši...
Dim Data As String
Data = MSComm1.Input
Data = Left(Data, Len(Data) - 2)
Ker js ful mau delam u basicu, pa še to samo v excellu, ti bom dal en primer, sam nevem če je lih najbolši...
Dim Data As String
Data = MSComm1.Input
Data = Left(Data, Len(Data) - 2)
AMD Phenom QUAD 9950 Black Edition, 8GB
pexo ::
hello,
sem nov član tega foruma in teško našel tapravo temo :)
imam sledeč problem. uporabljam visual basic .net, rad bi komuniciral z neko napravo preko COM1. te ukaze ki ste jih napisali sem uporabljal, vendar mi javi napako :(
naprimer:
MSComm1.Settings = "4800,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 3
MSComm1.PortOpen = True
MSComm1.RThreshold = 3
Name 'MSComm1' is not declared.
'Settings' is not a member of 'Integer'.
'CommPort' is not a member of 'Integer'.
.
.
.
.
Sem bol začetnik tega programa iščem po googlu pa mi ni nikol jasno. sej drgač tega nebi počel, ampak služba hoče da se to naučim :(
hvala za pomoč
Lp
Matic
sem nov član tega foruma in teško našel tapravo temo :)
imam sledeč problem. uporabljam visual basic .net, rad bi komuniciral z neko napravo preko COM1. te ukaze ki ste jih napisali sem uporabljal, vendar mi javi napako :(
naprimer:
MSComm1.Settings = "4800,N,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 3
MSComm1.PortOpen = True
MSComm1.RThreshold = 3
Name 'MSComm1' is not declared.
'Settings' is not a member of 'Integer'.
'CommPort' is not a member of 'Integer'.
.
.
.
.
Sem bol začetnik tega programa iščem po googlu pa mi ni nikol jasno. sej drgač tega nebi počel, ampak služba hoče da se to naučim :(
hvala za pomoč
Lp
Matic
majlo ::
Kolko te zastopim, rabiš ti en programček, ki ti bo izpisoval kaj dobiš preko com porta?
Ali boš tudi pošiljal podatke nazaj?
napiši mail al ga pošlji na zs, ti bom poslal en mali projekt za test com porta(v Visual studio 2005, visual basic). Tam ven boš lahko dobo vse kar potrebuješ.
LP
maš mail!
Ali boš tudi pošiljal podatke nazaj?
napiši mail al ga pošlji na zs, ti bom poslal en mali projekt za test com porta(v Visual studio 2005, visual basic). Tam ven boš lahko dobo vse kar potrebuješ.
LP
maš mail!
Zgodovina sprememb…
- spremenilo: majlo ()
pexo ::
podatke bi posiljal in prejemal
majlo::
morem počakat da naložim visual studio 2005, ker jz mam visual basic .net 2003
lp vsem
majlo::
morem počakat da naložim visual studio 2005, ker jz mam visual basic .net 2003
lp vsem
Zgodovina sprememb…
- spremenil: pexo ()
pexo ::
majlo:
program deluje, vendar je problem ker pošilja ASCII kodo. rabil bil pa v HEX obliki. razen če mi zna kdo kako pomagat, da bi pošiljalo v HEX obliki.
problem imam še to, da mi javi Type 'MSComm' is not defined.
spodaj imam napisano tako:
Lp vsem
program deluje, vendar je problem ker pošilja ASCII kodo. rabil bil pa v HEX obliki. razen če mi zna kdo kako pomagat, da bi pošiljalo v HEX obliki.
problem imam še to, da mi javi Type 'MSComm' is not defined.
spodaj imam napisano tako:
Dim as MSComm Dim MSComm1 As MSComm 'New a MSComm control MSComm1 = New MSComm Dim Buffer As String ' Buffer to hold input string MSComm1.CommPort = 1 ' Use the COM1 serial port MSComm1.Settings = "4800,N,8,1" MSComm1.InputLen = 3 MSComm1.PortOpen = True MSComm1.RThreshold = 3 End Sub Dim MSComm1 As MSComm Dim Data As String Data = MSComm1.Input Text1.Text = Data End Sub
Lp vsem
Zgodovina sprememb…
- spremenil: Primoz ()
pexo ::
Jutro,
Pa to me še zanima kako odpraviti napako. Morem še za izračun CRC naredit :(
Pa to me še zanima kako odpraviti napako. Morem še za izračun CRC naredit :(
Name 'vbFromUnicode' is not declared. Public Function CRC16A(ByVal Buffer() As Byte) As Long Dim i As Long Dim Temp As Long Dim crc As Long Dim j As Integer crc = &HFFFF& For i = LBound(Buffer) To UBound(Buffer) Temp = Buffer(i) * &H100& crc = crc Xor Temp For j = 0 To 255 If (crc And &H8000&) Then crc = ((crc * 2) Xor &H1021&) And &HFFFF& Else crc = (crc * 2) And &HFFFF& End If Next j Next i CRC16A = crc And &HFFFF End Function Private Sub Command1_Click() Dim aBuf() As Byte Dim crc As Long Dim p As String p = Text1.Text aBuf = StrConv(p, vbFromUnicode) crc = CRC16A(aBuf) Text2.Text = Hex(crc) End Sub
Zgodovina sprememb…
- spremenil: Primoz ()
Keki ::
Type 'MSComm' is not defined
kako odpravit to napako? čudo tehnike :)
Lp
Ja MSComm ali ni definiran al pa v tistem bloku kode ni dostopen.
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
pexo ::
ma kdo že narejen program, ker men nikakor ne gre :(
vedno se najde error. če ma kdo mi naj pošle po meilu je prikazan v mojem profilu. program naj bo čist enostaven. napišem sporočilo naprimer: 02 00 09 b0 01 18 43 in naj to pošle. in kar naprava odgovori mi naj prikaže isto. nič ASCII.
lp vsem
vedno se najde error. če ma kdo mi naj pošle po meilu je prikazan v mojem profilu. program naj bo čist enostaven. napišem sporočilo naprimer: 02 00 09 b0 01 18 43 in naj to pošle. in kar naprava odgovori mi naj prikaže isto. nič ASCII.
lp vsem
pexo ::
ja dela, ampka problem je ker pošla v ascii kodi. jz pa ne znam iz programa vn popravit da bi pošiljalo normalno v HEX boliki. in naprimer če hočem poslat 02 00 09 FF B0 01 00 18 43 ta ukaz bo pretvorilo v ascii in poslalo kr neke čudne hex oblike. :( čudo tehnike pač
majlo ::
Probaj tako
lp
serialPort.Encoding = System.Text.Encoding.GetEncoding(28591) serialPort.DtrEnable = True strOutput = Chr(&H24) serialPort.Write(strOutput)
lp
Zgodovina sprememb…
- spremenil: Primoz ()
pexo ::
zadeva zdj deluje :). problem je še naslednje:
Chr(&H00). kot 00 v hex obliki noče poslat. če pa daš Chr(&H5A) pa pošlje 5A.
Pošljem tako
MyChar = Chr(02) & Chr(9) & Chr(&HFF) & Chr(176) & Chr(1) & Chr(1) & Chr(24) & Chr(&H43)
Dobim to:
02 09 FF B0 01 01 18 43 0D
če pa,
Pošljem tak
MyChar = Chr(02) & Chr(&H00) & Chr(9) & Chr(255) & Chr(176) & Chr(1) & Chr(1) & Chr(24) & Chr(&H43)
Dobim to:
02 0D
zgleda da je 00 neko zaključno sporočilo. Bi mi znali o tem povedat in pomagat.
Lp
Chr(&H00). kot 00 v hex obliki noče poslat. če pa daš Chr(&H5A) pa pošlje 5A.
Pošljem tako
MyChar = Chr(02) & Chr(9) & Chr(&HFF) & Chr(176) & Chr(1) & Chr(1) & Chr(24) & Chr(&H43)
Dobim to:
02 09 FF B0 01 01 18 43 0D
če pa,
Pošljem tak
MyChar = Chr(02) & Chr(&H00) & Chr(9) & Chr(255) & Chr(176) & Chr(1) & Chr(1) & Chr(24) & Chr(&H43)
Dobim to:
02 0D
zgleda da je 00 neko zaključno sporočilo. Bi mi znali o tem povedat in pomagat.
Lp
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Visual Basic 6 branje RS232Oddelek: Programiranje | 867 (685) | cila22 |
» | [VB] Komunikacija s serijskimi napravamiOddelek: Programiranje | 2315 (1589) | mNeRo |
» | C++Oddelek: Programiranje | 1431 (1193) | zdravcc |
» | API+VBOddelek: Programiranje | 2112 (1816) | webblod |
» | Odpiranje dat.exe v VBOddelek: Programiranje | 3007 (2800) | webblod |