Hi all,
I guess this is a question more about the MSCOMM object within VB6 than PICs however, it may turn out the other way.
I'm sending serial data to the PC and displaying the data in several text boxes. The connection between the PC and PICF628 begins when the VB6 form opens and the user initiates a request from the PIC. The PIC then sends 5 differnent variables plus a couple of characters at the front so that I could rip out the two command char which indicate which text box to display the data. I'm using the DEBUG @ 300 BPS for communication.
The funny thing is that when any other data is sent after the initialization the PC comm port seems to have shifted (right) to places. I've attached both the PC code and a snippet from a large PIC file.
I must mention that some of the VB code I obtained was off Rentron.com, I just added a few things.
Oh, and one more thing, the days of frustration over the PICF88, was due to a decoupling cap, thanks for everyones advice especially Steve.
I'm thinking that maybe I need to encapsulate the data in control characters then strip them out at the other end. But after looking at the output of the pic using (MCS Communicator) when the initialistion command is given, I can't see any errors. ?????Code:Private Sub cmdinit_Click() Dim out As String out = "k" MSComm1.Output = out 'command to PIC to begin sending data. End Sub ---------------------------------------- Private Sub Form_Load() Dim i As Integer Dim send_data As String Dim InStr As String MSComm1.CommPort = 2 ' Fire Rx Event Every Two Bytes MSComm1.RThreshold = 6 'If MSComm1.InBufferCount = 6 Then ' When Inputting Data, Input 6 Bytes at a time MSComm1.InputLen = 6 'End If ' 300 Baud, No Parity, 8 Data Bits, 1 Stop Bit MSComm1.Settings = "300,N,8,1" ' Disable DTR MSComm1.DTREnable = False ' Open the port MSComm1.PortOpen = True End Sub ---------------------------------------------------------------- Public Sub MSComm1_OnComm() Dim sData As String If MSComm1.CommEvent = comEvReceive Then sData = sData & MSComm1.Input sData = MSComm1.Input ' Get data (2 bytes) End If Call display(sData) End Sub -------------------------------------------------------------------- Public Sub display(instring As String) Dim cmdword As String 'hold the command word Dim word As String 'holds the data Dim outstring As String If Len(instring >= Limit) Then outstring = instring instring = Right$(instring, Len(instring) - Limit) 'clears the buf Call handleinput(outstring) End If End Sub ------------------------------------------------------------------------ Sub handleinput(displaystr As String) Dim newstring As String cmdword = Left(displaystr, 2) ' rip out the command word = Mid$(displaystr, 3, 4) 'rip out the data to be displayed Select Case cmdword Case "OK" Case "aa" 'lower bound lower.Text = word Case "bb" 'upper bound upper.Text = word Case "cn" 'step count stepcnt.Text = word Case "ab" focus1.Text = word End Select End Sub ---------------------------------------------------- PIC code init: ' sendlower: debug "aa", #lower PAUSE 100 debug "bb", #upper PAUSE 100 sendstepcnt: debug "cn", #stepcnt PAUSE 100 sendf1: ADDR_L=1 ADDR_H=2 GOSUB readset DataA.byte0 = RDDATA_L DataA.byte1 = RDDATA_H debug "ab", #DataA





Bookmarks