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


Handskakning med nolla i serieporten

Postades av 2003-02-09 10:04:59 - Anders Nilsson, i forum visual basic - allmänt, Tråden har 9 Kommentarer och lästs av 814 personer

Hej!

Jag skall via serieporten kommunicera med en microprocessor som skall styra två stegmotorer. Hanskakningen sker genom att jag skickar en nolla och om det finns förbindelse får jag tillbaka en nolla.

Koden borde se ut så här:
<code>
' Initieringshandskakning
Private Sub cmdAnslut_Click()
' Skapar en "binär nolla"
Dim bytData As Byte
bytData = 0
' Ställer in COM1
MSComm.CommPort = 1
' Inställningar för överföringen
MSComm.Settings = "9600,N,8,1"
'Hela buffern ska läsas vid mottagande
MSComm.InputLen = 0
' Inkommande information i binär mode
MSComm.InputMode = comInputModeBinary
' Öppna porten
MSComm.PortOpen = True
'Ingen standardiserad handskakning
MSComm.Handshaking = comNone
' Skickar en nolla som handskakning
MSComm.Output = bytData
' En nolla tillbaka OK, annars ingen kontakt
If MSComm.Input <> bytData Then
' Uppkopplingen fungerade inte
Else
' Uppkopplingen fungerade
End If
End Sub
</code>
Men MSComm.Output vill inte ta emot min nolla. Tips?

I tidigare VB-versioner fanns kommandona SENDBYTE(0) och READBYTE för detta. Hur ersätter man dem?

/Nn


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 13:09:08 - Sven Åke Persson

Hej
Testa att ändra denna rad
>'Ingen standardiserad handskakning
MSComm.Handshaking = comNone

Till någon av dessa
comNone 0 ' No handshaking.
comXonXoff 1 ' XOn/XOff handshaking.
comRTS 2 ' Request-to-send/clear-to-send handshaking.
comRTSXOnXOff 3 'Both request-to-send and XOn/XOff handshaking.

OBS OBS Om du väljer 2 eller 3 härovan så måste du sätta
RTSEnabled = True

<Url:http://search.microsoft.com/default.asp?qu=MsComm&boolean=ALL&nq=NEW&so=RECCNT&p=1&ig=01&i=00&i=01&i=02&i=03&i=04&i=05&i=06&i=07&i=08&i=09&i=10&i=11&i=12&i=13&i=14&i=15&i=16&i=17&i=18&i=19&i=20&i=21&i=22&i=23&i=24&i=25&i=26&i=27&i=28&i=29&i=30&i=31&i=32&i=33&i=34&i=35&i=36&i=37&i=38&i=39&i=40&i=41&siteid=us/dev>
Kör du bipolär stegmotorstyrning ?
/Sven



Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 13:22:52 - Andreas Hillqvist

Jag tror din microdator hinner ta emot och skicka. Då får vänta lite innan du läser input. Vet inte om du kan använda sleep. Testa att vänta en millisekund.

<code>
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub cmdAnslut_Click()
Dim bytData As Byte
'Skapar en "binär nolla"
bytData = 0

' Ställer in COM1
MSComm.CommPort = 1

' Inställningar för överföringen
MSComm.Settings = "9600,N,8,1"

'Hela buffern ska läsas vid mottagande
MSComm.InputLen = 0

' Inkommande information i binär mode
MSComm.InputMode = comInputModeBinary

' Öppna porten
MSComm.PortOpen = True

'Ingen standardiserad handskakning
MSComm.Handshaking = comNone

' Skickar en nolla som handskakning
MSComm.Output = bytData

Sleep 1

' En nolla tillbaka OK, annars ingen kontakt
If MSComm.Input <> bytData Then
' Uppkopplingen fungerade inte
Debug.Print "Inget resultat"
Else
' Uppkopplingen fungerade
Debug.Print "OK"
End If
End Sub
</code>
Testa med 1. Du kan ju öka till 10 och 100 om det inte funkar då, så går det inte med sleep. Du kan då prova med en timer.


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 14:37:48 - Anders Nilsson

Tack för tipset om sleep. Det löste lite annat för mig. Problemet här tycks vara
<code>
Dim bytData As Byte
bytData = 0
</code>
som strular i
<code>
MSComm.Output = bytData
</code>
och i
<code>
If MSComm.Input <> bytData Then
</code>
Jag är ute efter att skicka en "binär nolla", dvs åtta bitar som alla är satta till noll. Den mottagande microprocesorn (PIC16C63) väntar sig en sådan binär nolla. Fler tips?

SvenPon: Vet ännu inte. Först måste jag få denna bit att fungera men troligtvis kommer jag att avända 4pin 5V stegmotor från Kjell & Co.

/Nn


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 18:51:03 - Sven Åke Persson

Hej
Ser lurigt ut , verkar rätt som du skriver.
Vad händer om du skickar tex 255
Vad får du för felkod ?
Är det bara Input som strular ?

Har du testat:
comXonXoff 1 ' XOn/XOff handshaking.
comRTS 2 ' Request-to-send/clear-to-send handshaking.

med RTSEnabled = True
DS


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 19:29:43 - Ivan Larsson

Hej
Kolla på http://www.eggertelectronics.com. De använder comporten
till sina stegmotorstyrningar. De går via comporten till en MAX232 Dual RS-232 Interface sedan vidare till en Philips 87C51. Där finns kanske något att snappa upp.
Har själv köpt en av deras styrningar som jag håller på att modifiera
efter egna behov. Det medföljer programexempel både för VB6 och
QuickBasic.
/Ivan


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-09 20:48:47 - Andreas Hillqvist

Du kan ju testa med en bytearray:
<code>
Dim bytData() As Byte
Redim bytData(0)
bytData(0) = 0 'Behövs egentligen inte. Men för förtydligande

MSComm.Output = bytData

Sleep 1

Select MSComm.InBufferCount
Case 0
Debug.print "No response"
Case 1
bytData = MSComm.Input
If bytData(0) = 0 Then
Debug.print "OK!"
Else
Debug.print "Invalid response!"
End If
Case Else
Debug.print "Invalid response!"

End Select
</code>


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-10 09:53:59 - Anders Drevin

Prova att skicka med andra datatyper, tex en sträng innehållandes noll:
<code>
Dim str As String

str = Chr$(0)

MSComm1.OutPut = str
</code>


Prova också att sätta
<code>
MSComm1.InputMode = comInputModeBinary
</code>

innan du skriver och läser från serieporten. Var då noga med att läsa in data i en bytearray.

I hjälpen om output står också följande:
To send binary data, you must pass a Variant which contains a byte array to the Output property. Prova det.

Mvh
Anders


Svara

Sv: Handskakning med nolla i serieporten

Postades av 2003-02-10 11:04:33 - Anders Nilsson

TACKAR! Både Andreas H och Anders D förslag fungerar utmärkt nu. Jag har sett i hjälpen att det går bra med både string och byte array men det senare har jag inte fått riktigt kläm på (ännu).

Dessutom tror jag det funkar med integer. Efter handskakning skall övriga instruktioner bestå av 8 bitar och då använde jag först integer i kombination med bitmanipulering vilket fungerade. Kanske skippar microprocessorn övriga bitar.

Normalt arbetar jag i C++ och Java men vill göra ett försök i VB. I de böcker som jag har skaffat mig om VB står det nästan ingenting om hur man arbetar med bitmanipulering men det är kanske meningen att man inte skall använda VB för sådana här tillämpningar?

Får jag allt att fungera så lägger jag ut programmet här på Pellesoft.

/Nn


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

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 569 619
27 953
271 709
5 752
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
Expand
next previous
Close

Previous

0/0

Next