Click here to Skip to main content
16,006,355 members
Home / Discussions / Visual Basic
   

Visual Basic

 
QuestionPictureBox Pin
Assaf825-Aug-07 13:17
Assaf825-Aug-07 13:17 
AnswerRe: PictureBox Pin
Christian Graus5-Aug-07 14:38
protectorChristian Graus5-Aug-07 14:38 
QuestionRe: PictureBox Pin
Assaf825-Aug-07 23:35
Assaf825-Aug-07 23:35 
AnswerRe: PictureBox Pin
Guffa5-Aug-07 20:44
Guffa5-Aug-07 20:44 
QuestionCDROM Pin
VB.NET_learner5-Aug-07 6:44
VB.NET_learner5-Aug-07 6:44 
AnswerRe: CDROM Pin
saeed_rezaei5-Aug-07 10:14
saeed_rezaei5-Aug-07 10:14 
GeneralOpens Only first CD ROM Pin
MohammadAmiry6-Aug-07 6:19
MohammadAmiry6-Aug-07 6:19 
QuestionHow to process data from serial device Pin
Fu Manchu5-Aug-07 2:31
Fu Manchu5-Aug-07 2:31 
Hi all,

i have been thinking on this problem for a while now - How do i process data from a serial device?

i have a serial connetion to a fire alarm system that sends ascii characters to the computer, i have esablished comms to the device, and have a method that is fired on every byte of data received.

Problem is the device sends the data in three byte wide blocks, so for example status,channel and then the checksum which is (status+channel). i have tried various method of circular buffers and pop-queues to try and process this but with no success!

for example the device would send ....14 then 1 then 15.

14 01 15 - this would represent fire on sensor 1

i am trying to write a method that every time a byte is received it stores it to a buffer and then processes it to try and put them in seperate variables.

example...

abnormality = buffer(x)
channel= buffer(x+1)
checksum = buffer(x+2)



Here is some rough example code but its not working correctly, does anyone have any ideas?

Thanks

 <br />
<br />
Dim queue(6) As Integer<br />
    Dim startPos As Integer = 2<br />
    <br />
<br />
    Private Sub ProcessData(ByVal data As Integer)<br />
        Dim test As Boolean = False<br />
        Dim checksum As Integer, channel As Integer, abnormality As Integer<br />
        Dim alphaBuffer As Integer, betaBuffer As Integer, gammaBuffer As Integer<br />
        Dim mytxt As String<br />
<br />
        'step1 fill queue at index 2 - starting point<br />
<br />
        queue(startPos + index) = data<br />
<br />
        index = index + 1<br />
<br />
        If index = 3 Then<br />
<br />
            'step2 test bytes <br />
            alphaBuffer = queue(2)<br />
            betaBuffer = queue(3)<br />
            gammaBuffer = queue(4)<br />
<br />
            If gammaBuffer = CalculateChecksum(alphaBuffer + betaBuffer) Then<br />
<br />
                abnormality = alphaBuffer<br />
                channel = betaBuffer<br />
                checksum = gammaBuffer<br />
<br />
<br />
                Me.Label2.Text = abnormality & " " & channel & " " & checksum<br />
                mytxt = Me.Label2.Text & " " & Me.ListBox1.Items.Count<br />
                Me.ListBox1.Items.Add(mytxt)<br />
                'LeftShift(queue)<br />
<br />
<br />
            Else<br />
<br />
                LeftShift(queue)<br />
                startPos = 1<br />
<br />
            End If<br />
<br />
<br />
        End If<br />
<br />
        If index = 4 Then<br />
<br />
            'step2 test bytes <br />
            alphaBuffer = queue(2)<br />
            betaBuffer = queue(3)<br />
            gammaBuffer = queue(4)<br />
<br />
            If gammaBuffer = CalculateChecksum(alphaBuffer + betaBuffer) Then<br />
<br />
                abnormality = alphaBuffer<br />
                channel = betaBuffer<br />
                checksum = gammaBuffer<br />
<br />
<br />
                Me.Label2.Text = abnormality & " " & channel & " " & checksum<br />
                mytxt = Me.Label2.Text & " " & Me.ListBox1.Items.Count<br />
                Me.ListBox1.Items.Add(mytxt)<br />
                'LeftShift(queue)<br />
<br />
<br />
            Else<br />
<br />
                LeftShift(queue)<br />
                startPos = 0<br />
<br />
            End If<br />
<br />
        End If<br />
<br />
        If index = 5 Then<br />
<br />
            'step2 test bytes <br />
            alphaBuffer = queue(2)<br />
            betaBuffer = queue(3)<br />
            gammaBuffer = queue(4)<br />
<br />
            If gammaBuffer = CalculateChecksum(alphaBuffer + betaBuffer) Then<br />
<br />
                abnormality = alphaBuffer<br />
                channel = betaBuffer<br />
                checksum = gammaBuffer<br />
<br />
                Me.Label2.Text = abnormality & " " & channel & " " & checksum<br />
                mytxt = Me.Label2.Text & " " & Me.ListBox1.Items.Count<br />
                Me.ListBox1.Items.Add(mytxt)<br />
                'LeftShift(queue)<br />
<br />
            Else<br />
<br />
                LeftShift(queue)<br />
                startPos = 0<br />
                index = index - 1<br />
<br />
            End If<br />
<br />
<br />
        End If<br />
<br />
<br />
        If index = 6 Then<br />
<br />
            'step2 test bytes <br />
            alphaBuffer = queue(2)<br />
            betaBuffer = queue(3)<br />
            gammaBuffer = queue(4)<br />
<br />
            If gammaBuffer = CalculateChecksum(alphaBuffer + betaBuffer) Then<br />
<br />
                abnormality = alphaBuffer<br />
                channel = betaBuffer<br />
                checksum = gammaBuffer<br />
<br />
<br />
                Me.Label2.Text = abnormality & " " & channel & " " & checksum<br />
                mytxt = (Me.Label2.Text & " " & Me.ListBox1.Items.Count)<br />
                Me.ListBox1.Items.Add(mytxt)<br />
                LeftShift(queue)<br />
<br />
            Else<br />
<br />
                LeftShift(queue)<br />
                startPos = 0<br />
                index = index - 1<br />
<br />
            End If<br />
<br />
<br />
        End If<br />
<br />
<br />
<br />
        If index = 7 Then<br />
<br />
            index = 0<br />
<br />
        End If<br />
<br />
<br />
          <br />
<br />
    End Sub

AnswerRe: How to process data from serial device Pin
Luc Pattyn5-Aug-07 2:38
sitebuilderLuc Pattyn5-Aug-07 2:38 
GeneralRe: How to process data from serial device Pin
Fu Manchu5-Aug-07 12:15
Fu Manchu5-Aug-07 12:15 
GeneralRe: How to process data from serial device Pin
Luc Pattyn5-Aug-07 13:04
sitebuilderLuc Pattyn5-Aug-07 13:04 
GeneralRe: How to process data from serial device Pin
Fu Manchu5-Aug-07 23:25
Fu Manchu5-Aug-07 23:25 
QuestionDatagrid view to DataBase - Update Pin
NANCO5-Aug-07 2:17
NANCO5-Aug-07 2:17 
AnswerRe: Datagrid view to DataBase - Update Pin
Johan Hakkesteegt6-Aug-07 20:36
Johan Hakkesteegt6-Aug-07 20:36 
QuestionRe: Datagrid view to DataBase - Update Pin
Trupti Mehta7-Aug-07 19:25
Trupti Mehta7-Aug-07 19:25 
AnswerRe: Datagrid view to DataBase - Update Pin
Johan Hakkesteegt7-Aug-07 22:51
Johan Hakkesteegt7-Aug-07 22:51 
GeneralRe: Datagrid view to DataBase - Update Pin
Trupti Mehta8-Aug-07 0:33
Trupti Mehta8-Aug-07 0:33 
GeneralRe: Datagrid view to DataBase - Update Pin
Johan Hakkesteegt8-Aug-07 22:49
Johan Hakkesteegt8-Aug-07 22:49 
GeneralRe: Datagrid view to DataBase - Update Pin
Trupti Mehta9-Aug-07 1:02
Trupti Mehta9-Aug-07 1:02 
Questioncrystal reportviewr problem Pin
magedhv4-Aug-07 22:04
magedhv4-Aug-07 22:04 
AnswerRe: crystal reportviewr problem Pin
Rupesh Kumar Swami6-Aug-07 0:57
Rupesh Kumar Swami6-Aug-07 0:57 
QuestionDecimal Point Pin
WestSideRailways4-Aug-07 19:22
WestSideRailways4-Aug-07 19:22 
AnswerRe: Decimal Point Pin
Luc Pattyn5-Aug-07 0:13
sitebuilderLuc Pattyn5-Aug-07 0:13 
GeneralRe: Decimal Point Pin
WestSideRailways5-Aug-07 9:44
WestSideRailways5-Aug-07 9:44 
GeneralRe: Decimal Point Pin
Luc Pattyn5-Aug-07 10:07
sitebuilderLuc Pattyn5-Aug-07 10:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.