Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Paus mellan 2 code rader

Postades av 2007-07-28 19:58:40 - Magnus Niklasson, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 1288 personer

Hej
Jag vill skicka 33h baud 5 på com 1
invänta 3 byte baud 10400
pausa 40ms
skicka F7h på com1 Baud 10400
Invänta CCh på com 1.Baud 10400
Hur pausar jag mellan dessa två rader.
Jag har testat sleep, men det verkar som om den pausar först då innan den skickar 33h.se code nedan
Detta är för att starta upp en komunikation med en bil på OBD2.
Jag vill sedan ha alla byte visade i hex i ett text fönster.
Kan någon detta?

Private Sub Command4_Click()
MSComm1.InBufferCount = 0


Dim ComDcb As DCB 'windows API type in w32comm.bas file
Dim ret As Long

SetBaudRate = False

' *** NOTE: PORT MUST BE OPEN FOR THIS FUNCTION TO WORK ***

'Need to get current state before setting new value
ret = GetCommState(MSComm1.CommID, ComDcb)
If ret = 0 Then
Err.Raise 1, "SetBaudRate", "Could not read current state of ISO port"
End If

'Modify baud rate from 9600 to 5
ComDcb.BaudRate = 5
ret = SetCommState(MSComm1.CommID, ComDcb)
MSComm1.Output = Chr(&H33)





ret = GetCommState(MSComm1.CommID, ComDcb)
If ret = 0 Then
Err.Raise 1, "SetBaudRate", "Could not read current state of ISO port"
End If

'Modify baud rate from 5 to 10400
ComDcb.BaudRate = 10400
ret = SetCommState(MSComm1.CommID, ComDcb)
Do
DoEvents

Loop Until MSComm1.InBufferCount = 3

Sleep (40)


MSComm1.Output = Chr(&HF7)

MSComm1.InBufferCount = 0

Do
DoEvents

Loop Until MSComm1.InBufferCount = 1


If MSComm1.Input = Chr(&HCC) Then
MsgBox "Comunication OK"

MSComm1.Output = Chr(&H4)


Else
MsgBox "No comunication"

End If


Svara

Sv: Paus mellan 2 code rader

Postades av 2007-07-30 17:55:37 - Sven Åke Persson

Testa att skriva Pause på detta sätt.
Sleep(40) byter du ut mot detta.
<code>
Private Declare Function GetTickCount& Lib "kernel32" ()
Dim halt As Long
'...........................
'............................
'.........................
'Modify baud rate from 5 to 10400
ComDcb.BaudRate = 10400
ret = SetCommState(MSComm1.CommID, ComDcb)
Do
halt = GetTickCount + 40
DoEvents

Loop Until MSComm1.InBufferCount = 3
Do until GetTickCount > halt
Loop
'Sleep (40)


MSComm1.Output = Chr(&HF7)

MSComm1.InBufferCount = 0
</code>


Svara

Sv:Paus mellan 2 code rader

Postades av 2007-07-30 21:00:56 - Magnus Niklasson


Måste försöka testa i bilen, hör av mig.
tack på förhand.

Magnus


Svara

Sv: Paus mellan 2 code rader

Postades av 2007-09-28 13:44:17 - Magnus Niklasson

Jag sprungit på ett annat problem med, jag måste låta programmet stanna, i 2 sekunder innan jag ändrar till baud rate 10400, så progarmmet hinner skicka 10 bit på baud 5 innan baud ändringen.
(1 startbit 8 bit information och 1 stopp bit)

Magnus


Svara

Sv:Paus mellan 2 code rader

Postades av 2007-09-29 13:17:04 - Sven Åke Persson

Nu kan jag klart inte ditt problem i detalj. Men du får lägga upp en loop på lämpligt ställe som
ligger och snurra tills det kommer 8 bit i out.
Gör en Until vilkor och ha ett DoEvents mitt i Do Loopen


Svara

Sv: Paus mellan 2 code rader

Postades av 2008-02-29 08:58:33 - Magnus Niklasson

Nu Har jag löst mitt problem och fått igång OBD2 komunikationen med bilen.
Problemet var att VB/Windows inte klarar att skriva i 5 Baud helt rätt, bara läsa.
Det jag fick göra var att använda Break signaler, det blev så här.
Är det fler som skriver VB kod för komunikation för bilar, hör gärna av er.
Hur simpelt som helst (med facit i hand).
En lite fråga, något är fel i konverteringen till HEX 6A, blir 00, kan någon förklara varför?

Magnus


Private Sub Command6_Click()
If MSComm1.PortOpen = True Then
MsgBox "already open"
Else
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 0
MSComm1.PortOpen = True
Dim ComDcb As DCB 'windows API type in w32comm.bas file
Dim ret As Long
SetBaudRate = False

' *** NOTE: PORT MUST BE OPEN FOR THIS FUNCTION TO WORK ***


ret = GetCommState(MSComm1.CommID, ComDcb)
If ret = 0 Then
Err.Raise 1, "SetBaudRate", "Could not read current state of ISO port"
End If

'Modify baud rate from 9600 to 5
ComDcb.BaudRate = 10400
ret = SetCommState(MSComm1.CommID, ComDcb)
End If

End Sub

Private Sub Command5_Click()
If MSComm1.PortOpen = False Then
MsgBox "Com 1 Not open"
Else
End If


'Send 0x33 at Baud 5 with brake command
' Set the Break condition.
'Start bit
MSComm1.Break = True
Sleep (198)
' Wait for the sleep to pass.

' Bit 0 and 1 to zero
MSComm1.Break = False
Sleep (396)
' Wait for the sleep to pass.

' Bit 2 and 3 to one
MSComm1.Break = True
Sleep (396)
' Wait for the sleep to pass.

' Bit 4 and 5 to zero
MSComm1.Break = False
Sleep (396)
' Wait for the sleep to pass.

' Bit 6 and 7 to one
MSComm1.Break = True
Sleep (396)

MSComm1.Break = False




Sleep (180)
' Wait for the Sleep to pass.
Dim txt As String
Dim bytes() As Byte
Dim i As Integer

' Display the bytes.
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
txt = txt & Format$(Hex$(bytes(i)), "00") & " "
Next i
Text2.Text = Text2.Text + txt + vbNewLine
Sleep (200)

MSComm1.Output = Chr(&HF7)

Sleep (20) 'Sleep (25-50)
' Display the bytes.
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
txt = txt & Format$(Hex$(bytes(i)), "00") & " "
Next i
Text2.Text = Text2.Text + txt + vbNewLine
Sleep (2000)
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
txt = txt & Format$(Hex$(bytes(i)), "00") & " "
Next i
Text2.Text = Text2.Text + txt + vbNewLine

'Wait for sleep to pass
'Send
MSComm1.Output = Chr(&H68)
MSComm1.Output = Chr(&H6A)
MSComm1.Output = Chr(&HF1)
MSComm1.Output = Chr(&H1)
MSComm1.Output = Chr(&H0)
MSComm1.Output = Chr(&HC4)
Sleep (20)

' Display the bytes.
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
txt = txt & Format$(Hex$(bytes(i)), "00") & " "
Next i
Text2.Text = Text2.Text + txt + vbNewLine


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 889
27 965
271 778
454
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies