hej! Ett sätt vore kanske att låta alla 5 värden bilda en textsträng och sedan styra upp delarna bra ide' ! Kolla om du kan använda mitt gamla prog HiWord-LoWord Du är intresserad av de två Byte som ditt Word representerar. Att med säkerhet överföra data mellan en microprocessor och ett pc-program kräver vissa kontroller. mycken tack!hjälp med serieport programm
Jag håller på att göra ett VB6 program som ska ta emot data från en PIC-krets via com porten.
PIC'en skickar data i form av 5 olika variabler via comporten och jag vill då att varje variabels data hamnar i en bestämmd textruta i mitt VB programm. Mitt problem är att jag inte vet hur jag ska kontrollera de olika variablernas värden hammnar rätt - de kommer ju efter varandra med 50mS mellanrum som jag fixat i PIC-programmet.
alltså hur kontrollerar jag flödet av data så att de hammnar i rätt txtruta?
med vänliga hälsningar
Leif NejmanSv: hjälp med serieport programm
till rätt ruta. Sedan beror det kanske lite på hur ofta det börjar om igen från värde 1.Sv:hjälp med serieport programm
det är även problem med datatypen, eftersom PIC'en bara kan hantera ett "Word" som då delas upp i en low byte och en high byte så måste jag sätta samman de två delarna till ett word igen i mitt VB programm.
Jag tror jag måste använda LEN i comverktyget.
tack för svaret
LNSv: hjälp med serieport programm
Programarkivet:HiWord LoWord spara minne
Skulle vara intressant att se din kod som läser Comporten.
Kan man köra en simulation som härmar din Pic
Hur kan en typisk sekvens se ut ?Sv:hjälp med serieport programm
Då kan du använda denna kod
<code>
Option Explicit
Private Sub Command1_Click()
Dim wparam As Integer
Dim ret As Integer
Dim LOBYTE As Byte
Dim HIBYTE As Byte
' Set wParam to a value och skicka det till Functionen
wparam = 22135 ' ett exempel på ditt input word
'eller wParam = &H77FF dvs skicka Hex talet för ditt Word båda trixen fungerar
' Make call to function:
ret = GetHiLobyte(wparam, LOBYTE, HIBYTE)
' Print out return values:
MsgBox LOBYTE & " " & HIBYTE
End Sub
' Enter the following Function statement as one, single line:
Private Function GetHiLobyte(ByVal wparam As Integer, LOBYTE As Byte, HIBYTE As Byte)
' This is the LOBYTE of the wParam:
LOBYTE = wparam And &HFF&
' This is the HIBYTE of the wParam:
HIBYTE = wparam \ &H100 And &HFF&
gethilobyte = 1
End Function
'***************************************************************
Private Sub Command2_Click()
'Så här får du tillbaka ett Word av två sammansatta Byte
'Kolla om det skall vara tvärtom på ordningen LByte HByte testa båda fallen.
Dim HByte As Byte, LByte As Byte
Dim hexWord As String
LByte = 119 'ett exempel som skall ge 22135 till svar
HByte = 86
'Här får du kanske ändra på ordningsföljden
hexWord = "&H" & Hex$(HByte) & Hex$(LByte)
MsgBox Val(hexWord)
End Sub
</code>Sv: hjälp med serieport programm
Master slave kommunikation.
Protokoll med checksum ( CRC - FRC )
Pic-kretsen bör vara Slave, alltså den väntar att skicka meddelande tills den blir pollad av Mastern (PC)
Protokoll, exempelvis S.N.A.P läs mer på http://www.hth.com/snap/
Eller om du vill lära dej ett riktig protokoll, läs mer om MODBUS-protokollet.
Det går fint att få en PIC-krets att förstå och använda Modbus., Sedan finns det färdiga DLL'er Ocx'er till VB6 att hämta på nätet som hanterar kommuniktionen mellan ditt program och pic-kretsen.Sv: hjälp med serieport programm
jag ska testa ditt program, och vad jag kan se så tror jag att det gör jobbet.
min kompilator till pic'en kör basic och har ett färdigt verktyg för serie komunikationen där jag lägger mitt "word" i outputbuffer efter att man konfigurerat den med 8 bitar stopp bit och hastighet 9600.
min ide är att sända 5 olika word med 50ms mellanrum och jag använder ingen crc eller kontroll lina.
kommunikationen blir bara en "väg" dvs från pic'en till VB6 programmet i datorn.'
Jag har gjort ett vb6 programm för att simulera pic'en och kört den på en annan pc med en nollmodems kabel mellan de två datorena och lyckats få de två att tima varandra och få rätt data på rätt plats i mottagardatorn.
Nu återstår att fixa pic'ens programm, och att se vad som händer med H-byte Low-byte så då tror jag ditt programm fixar detta.
tusen tack
LN