Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Ned Nov 02, 2008 10:19 pm Naslov sporočila: COM port in Visual Basic |
|
|
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 |
|
Nazaj na vrh |
|
 |
RokO Član

Pridružen-a: Čet 23 Nov 2006 11:14 Prispevkov: 120 Aktiv.: 0.53 Kraj: Kranj
|
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Tor Nov 04, 2008 11:05 pm Naslov sporočila: |
|
|
Naredil sem tako:
Private Sub Form_Load()
MSComm1.RThreshold = 3
MSComm1.InputLen = 2
MSComm1.Settings = "4800,N,8,1"
MSComm1.DTREnable = False
MSComm1.CommPort = 3
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim Data As String
Data = MSComm1.Input
Label1 = Data
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Stvar sicer deluje ampak izpisuje čudno,rad bi da mi izpisuje številke v eno vrstico,ne pa v dve ali tri tako kot zdaj. Na MCU imam program ki mi na pritisk tipke šteje navzgor,številke pa bi rad izpisoval na računalniku. kako naj naredim izpis v eno vrstico? Lp |
|
Nazaj na vrh |
|
 |
S56RGA Član

Pridružen-a: Čet 11 Sep 2008 13:33 Prispevkov: 325 Aktiv.: 1.59 Kraj: Koper
|
Objavljeno: Sre Nov 05, 2008 10:47 am Naslov sporočila: |
|
|
Poskušaj iz stringe odstranit vbcr in vbnl. |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Sre Nov 05, 2008 11:29 am Naslov sporočila: |
|
|
Saj bi če bi vedel kako! Malo pomoči prosim. |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.04 Kraj: Severna primorska
|
Objavljeno: Sre Nov 05, 2008 11:43 am Naslov sporočila: |
|
|
Čez vsebino spremenljivke Data se sprehodiš z eno zanko in preverjaš kateri znaki so notri.
Če so prisotni znaki, ki ti pomenijo prelom vrstice jih nadomestiš z na primer presledkom.
Lp |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Sre Nov 05, 2008 11:48 am Naslov sporočila: |
|
|
A lahko pokažeš na primeru? Sem na bolj na začetku VB. Lp |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.04 Kraj: Severna primorska
|
Objavljeno: Sre Nov 05, 2008 11:54 am Naslov sporočila: |
|
|
Nekaj v tem stilu kot je napisano tukaj bi moralo delovati.
Je še celo bolj enostavno. Ugotoviti moraš katere znake zamenjati.
Lp |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Sre Nov 05, 2008 12:52 pm Naslov sporočila: |
|
|
Ne kapiram najbolj ta "replace". Kak bi se pa dalo zbrisat zadnja dva znaka? |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.04 Kraj: Severna primorska
|
Objavljeno: Sre Nov 05, 2008 1:07 pm Naslov sporočila: |
|
|
Mislim da ni kaj veliko za tuhtat:
Citiram: |
Dim TestString As String = "Shopping List"
' Returns "Shipping List".
Dim aString As String = Replace(TestString, "o", "i") |
Torej za tvoj primer:
Koda: |
Label1= Replace(Data, "*", " ") |
Kjer bi * pomenila znak, ki ga hočeš nadomestiti!
Verjetno je to CR ali LF, ki se kažeta kot 10 in 13 decimalno.
Torej Chr(*) je enako 10 ali 13
Lp
EDIT:
Mogoče še eno branje:
Link
Bolj na dolgo in široko... |
|
Nazaj na vrh |
|
 |
S56RGA Član

Pridružen-a: Čet 11 Sep 2008 13:33 Prispevkov: 325 Aktiv.: 1.59 Kraj: Koper
|
Objavljeno: Sre Nov 05, 2008 1:19 pm Naslov sporočila: |
|
|
katero verzijo VB uporabljaš?
VB6 in net2003,5,8 se zelo razlikujejo.
-Replace poišče določene znake v spremenljivki in jih zamenja z tvojim parametrom.
recimo
Dim str As String
str = "To so moji podatki" & vbCrLf & "K" 'simulaciaj stringe iz com porta - k dodan kot konec za lažjo predstavo
Debug.Print("Original: " & str)
Debug.Print("Izrezano: " & Replace(str, vbCrLf, "")) 'poišči vbcrlf in zamenjaj z null |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Sre Nov 05, 2008 1:28 pm Naslov sporočila: |
|
|
Uporabljam VB6. |
|
Nazaj na vrh |
|
 |
S56RGA Član

Pridružen-a: Čet 11 Sep 2008 13:33 Prispevkov: 325 Aktiv.: 1.59 Kraj: Koper
|
Objavljeno: Sre Nov 05, 2008 2:11 pm Naslov sporočila: |
|
|
Poskusi z
Label1= Replace(Data, vbcrlf, "")
Lahko pa poskusiš tudi z spreminjanjem parametrov ki jih nastavljaš za port
MSComm1.RThreshold = 3 'poskusi z 2 ali manj. ta ukaz generira on comm event po x sprejetih znakih
MSComm1.InputLen = 2 ' velikost bufferja poskusi z 0 |
|
Nazaj na vrh |
|
 |
toncibalonci Član

Pridružen-a: Pet 03 Avg 2007 21:12 Prispevkov: 331 Aktiv.: 1.52 Kraj: Dravograd
|
Objavljeno: Sre Nov 05, 2008 2:40 pm Naslov sporočila: |
|
|
Zdaj sem naredi takole:
Private Sub Form_Load()
MSComm1.Settings = "4800,N,8,1"
MSComm1.CommPort = 3
MSComm1.InputLen = 2
MSComm1.PortOpen = True
MSComm1.RThreshold = 3
Label1 = ""
End Sub
Private Sub MSComm1_OnComm()
Dim Data As Variant
Data = MSComm1.Input
a = Replace(Data, Chr(10), "")
Label1 = Replace(a, Chr(13), "")
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Deluje bolje,ampak še ne tako kot bi rad. Še vedno nekaj skače pri tri mestnem število,vem da je to odvisno od
MSComm1.RThreshold = 3
MSComm1.InputLen = 2
če ju drugače nastavim je pa od začetka slabše. Ne vem kaj naj še spremenim?? |
|
Nazaj na vrh |
|
 |
jjakob Član

Pridružen-a: Pet 19 Nov 2004 14:12 Prispevkov: 1348 Aktiv.: 5.67
|
Objavljeno: Sre Nov 05, 2008 6:07 pm Naslov sporočila: |
|
|
S56RGA je napisal/a: |
VB6 in net2003,5,8 se zelo razlikujejo.
|
OT vprašanje: Katero verzijo bi priporočali za začetniško programiranje? Katera ima več materiala na internetu (primerov)? |
|
Nazaj na vrh |
|
 |
|