'************************************************* ***************
'* Name : SERIAL RF *
'* Author : Ryan Barrett *
'* Notice : Copyright (c) 2005 Rytech Computing *
'* : All Rights Reserved *
'* Date : NOV 2005 *
'* Version : 1.0 *
'* Notes : *
'* : PC to PIC and vice-versa! *
'************************************************* ***************
INCLUDE "bs2defs.bas"
RECADD VAR b3 '8 bit latch number
BITVALUE VAR byte '8 bit latch value
MCONTROL1 var b5 'MOTORCONTROL BYTE - FORWARD BACK LEFT RIGHT
MSPEED1 var b6 'MOTORSPEED BYTE FOR HPWM
LIGHTS1 var b7 'BYTE CONTROLLING LED LIGHTS
LVAL4 var b8
'CVAL1 var b9
'CVAL2 var b10
'CVAL3 VAR b11
'CVAL4 VAR b12
'i var byte
serpin VAR porta.2 'serial input pin
serpout var porta.3 'serial output pin
INITIAL:
trisa = %00000100
'trisa = %00010000
trisb = %00000000
MCONTROL1 = 0
MSPEED1 = 0
LIGHTS1 = 0
LVAL4 = 0
PORTB = 0
'flash leD
HIGH portA.1
PAUSE 700
LOW portA.1
PAUSE 800
'flash leD
HIGH portA.1
PAUSE 1000
LOW portA.1
PAUSE 800
'flash leD
HIGH portA.1
PAUSE 1000
LOW portA.1
PAUSE 800
HIGH portA.1
PAUSE 1000
LOW portA.1
GoTO loop
loop:
BITVALUE = 0
SERIN serpin,N2400,[254],RECADD,BITVALUE' serial data in on portA.1
serout serpout,N2400,[220,#MCONTROL1]
IF RECADD = 1 THEN outr1 ' if request is for RECADD#1 then goto RECADD#1 routine
IF RECADD = 2 THEN outr2 ' if request is for RECADD#2 then goto RECADD#2 routine
IF RECADD = 3 THEN outr3 ' if request is for RECADD#3 then goto RECADD#3 routine
IF RECADD = 4 THEN outr4 ' if request is for RECADD#4 then goto RECADD#4 routine
IF RECADD = 5 THEN outr5 ' if request is for RECADD#5 then goto RECADD#5 routine
IF RECADD = 6 THEN outr6 ' if request is for RECADD#6 then goto RECADD#6 routine
GOTO loop
outr1:
HIGH portA.1
Pause 1000
MCONTROL1 = BITVALUE
'INSERT OUT SERIAL TO OTHER PIC CONTROLLING MOTOR DIRECTIONS
LOW portA.1: GOTO loop
outr2:
HIGH portA.1
Pause 1000
MSPEED1 = BITVALUE
'INSERT OUT SERIAL TO OTHER PIC CONTROLLING MOTOR HPWM
LOW portA.1: GOTO loop
outr3:
HIGH portA.1
Pause 1000
LIGHTS1 = BITVALUE
'INSERT OUT SERIAL TO LED PIC CONTROLLING LEDS
LOW portA.1: GOTO loop
outr4:
HIGH portA.1
Pause 1000
LVAL4 = BITVALUE
LOW portA.1: GOTO loop
GOTO loop
outr5:
HIGH portA.1
PAUSE 1000
LOW portA.1
Pause 1000
HIGH portA.1
Pause 1000
LOW portA.1
Pause 1000
HIGH portA.1
Pause 1000
LOW portA.1
Pause 1000
HIGH portA.1
Pause 1000
LOW portA.1
Pause 1000
HIGH portA.1
Pause 1000
LOW portA.1
Pause 1000
HIGH portA.1
Pause 1000
LOW portA.1: GOTO loop
outr6:
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1
Pause 700
HIGH portA.1
Pause 700
LOW portA.1: GOTO loop
GOTO loop
The Visual Basic Program is very immature and looks something like this:
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''
' PC > PIC SERIAL RF
' Ryan Barrett
' Rytech Computing
' DEC 2005
'
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public bit1value As Integer
Public bit2value As Integer
Public bit3value As Integer
Public bit4value As Integer
Public allbitout As Integer
Public allbitout8 As Integer
Public recadd As Integer
Dim oldlogtext As String
Dim serinput As String
Private Sub AddressList_Click()
recadd = AddressList.ItemData(AddressList.Text)
'MsgBox (recadd)
'Call TransmitIt
End Sub
Private Function TransmitIt2()
'For I = 1 To 3 ' Loop 4 times
MSComm1.Output = Chr$(254) & Chr$(recadd) & Chr$(allbitout8)
'Pause 235 ' Pause 250mS
oldlogtext = SERIALINLOG.Text
serinput = MSComm1.Input
SERIALINLOG.Text = "Incoming Data: " + serinput + vbCrLf + oldlogtext
'PARSESTRINGNOW
'Next I
End Function
Private Function PARSESTRINGNOW()
Dim Atext As String
Dim Btext As String
Dim Ctext As String
Dim Dtext As String
Dim Etext As String
Dim Ftext As String
Dim Gtext As String
Dim Htext As String
Dim Itext As String
Dim Jtext As String
Dim count As Long
If serinput = vbNullString Then
Else
count = Len(serinput)
Atext = Mid$(serinput, InStr(serinput, "A") + 1, InStr(serinput, "B") - InStr(serinput, "A") - 1)
Btext = Mid$(serinput, InStr(serinput, "B") + 1, InStr(serinput, "C") - InStr(serinput, "B") - 1)
Ctext = Mid$(serinput, InStr(serinput, "C") + 1, InStr(serinput, "D") - InStr(serinput, "C") - 1)
Dtext = Mid$(serinput, InStr(serinput, "D") + 1, InStr(serinput, "E") - InStr(serinput, "D") - 1)
Etext = Mid$(serinput, InStr(serinput, "E") + 1, InStr(serinput, "F") - InStr(serinput, "E") - 1)
Ftext = Mid$(serinput, InStr(serinput, "F") + 1, count - (InStr(serinput, "F") - 1))
'MsgBox (Atext + " " + Btext + " " + Ctext + " " + Dtext + " " + Etext + " " + Ftext)
oldlogtext = SERIALINLOG.Text
SERIALINLOG.Text = "parsed data string: " + Atext + " " + Btext + " " + Ctext + " " + Dtext + " " + Etext + " " + Ftext + vbCrLf + oldlogtext
End If
End Function
Public Sub bit1_Click()
Call AddBits(1)
End Sub
Private Sub bit2_Click()
Call AddBits(2)
End Sub
Private Sub bit3_Click()
Call AddBits(3)
End Sub
Private Sub bit4_Click()
Call AddBits(4)
End Sub
Private Sub BYTEOUT1_Click()
allbitout8 = 129
TransmitIt2
End Sub
Private Sub BYTEOUT2_Click()
allbitout8 = 3
TransmitIt2
End Sub
Private Sub BYTEOUT3_Click()
allbitout8 = 7
TransmitIt2
End Sub
Private Sub BYTEOUT4_Click()
allbitout8 = 15
TransmitIt2
End Sub
Private Sub BYTEOUT5_Click()
allbitout8 = 11
TransmitIt2
End Sub
Private Sub Command1_Click()
allbitout8 = 255
TransmitIt2
End Sub
Private Sub Command2_Click()
MSComm1.Output = Chr$(254) & Chr$(1)
Pause 235 ' Pause 250mS
End Sub
Private Sub Command3_Click()
MSComm1.Output = Chr$(254) & Chr$(2)
Pause 235 ' Pause 250mS
End Sub
Private Sub Command4_Click()
Pause 300
MSComm1.Output = Chr$(254) & Chr$(1) & Chr$(0)
SERIALINLOG.Text = MSComm1.Input
Pause 250
SERIALINLOG.Text = MSComm1.Input
Pause 250
SERIALINLOG.Text = MSComm1.Input
End Sub
Private Sub Form_Initialize()
bit1value = 0
bit2value = 0
bit3value = 0
bit4value = 0
allbitout = 0
recadd = 0
allbitout8 = 0
End Sub
Private Function AddBits(whichbit As Integer)
If whichbit = 1 Then
If bit1.Value = 0 Then
bit1value = 0
Else
bit1value = 1
End If
'MsgBox ("bit1")
End If
If whichbit = 2 Then
If bit2.Value = 0 Then
bit2value = 0
Else
bit2value = 2
End If
'MsgBox ("bit2")
End If
If whichbit = 3 Then
If bit3.Value = 0 Then
bit3value = 0
Else
bit3value = 4
End If
'MsgBox ("bit3")
End If
If whichbit = 4 Then
If bit4.Value = 0 Then
bit4value = 0
Else
bit4value = 8
End If
'MsgBox ("bit4")
End If
allbitout = bit1value + bit2value + bit3value + bit4value
'MsgBox (allbitout)
'fourbitbyte.Text = allbitout
Call TransmitIt
End Function
Private Sub Form_Load()
MSComm1.Settings = "2400,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub
Public Sub Pause(milli As Long)
Sleep (milli)
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub
Bookmarks