Don't know if this will be of any use for you, but over the weekend I have made up a little program which may help you a little.
It is just simply a blind receiver for ASCII. I have run it connected to that alarm panel i pasted the link to previously & it runs quite nicely.
Also connected to a 2nd computer running Hyperterminal & used hyperterminal to paste some ascii text copied from a text file which ran quite nicely also.
Cable used for PC to PC link I made up as 3 wire only crossover.
i.e. Db9A pin2 to Db9B pin3
This little proggy requires MVCOM lib as the PB4.0 update Marc Vitry has done.
Code: Select all
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
; Coded by Baldrick 22/10/2006
;- Window Constants
;
Enumeration
#Window_Main
#Window_Com_Setup
#Window_About
EndEnumeration
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
Enumeration
#MENU_2
#MENU_3
#MENU_4
#MENU_8
#MENU_13
#MENU_15
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_Connect
#Button_Disconnect
#Editor_DataIn
#Text_LabelPort
#Text_Label_Speed
#Text_Label_Data
#Text_Label_Stop
#Text_Label_Parity
#Combo_Com
#Combo_Baud
#Combo_Dbits
#Combo_Sbits
#Combo_Parity
#Button_Setup_Save
#Text_About
#Button_About_Ok
EndEnumeration
#Appname="ASCII Serial Receiver"
;- StatusBar Constants
;
Enumeration
#StatusBar_0
EndEnumeration
About.s="This program coded by Baldrick as a test example only"+#CRLF$
About+"By use of this program you agree to accept all liability for any damages "
About+"caused by use of this program whether direct or indirectly, blah, blah....."
Procedure InsertEditorText(editorgadget,results$)
ProcedureReturn SendMessage_(GadgetID(editorgadget),#EM_REPLACESEL,0,results$)
EndProcedure
Procedure Connect(Connect$)
Hcom=ComOpen(Connect$,#HandShakeModeNone,128,128) ; in tests memory buffers down to value
If Hcom=0 ; 1 byte work without fault
MessageRequester(#Appname,"Connection fail, please check settings and try again")
Else
Beep_(1500,250)
DisableGadget(#Button_Connect,1)
DisableGadget(#Button_Disconnect,0)
EndIf
ProcedureReturn Hcom
EndProcedure
Procedure DisConnect(Hcom)
If Hcom
Result=ComClose(Hcom)
EndIf
If Result=#True
Beep_(400,200)
DisableGadget(#Button_Connect,0)
DisableGadget(#Button_Disconnect,1)
EndIf
ProcedureReturn Result
EndProcedure
Procedure.s Rx(Hcom)
Count=0
Count=ComInputBufferCount(Hcom)
If Count
Rxd.s=Space(Count)
ComRead(Hcom,@Rxd,Count)
Else
Rxd.s=""
EndIf
ProcedureReturn Rxd
EndProcedure
Procedure.s Read_PortPref()
If OpenPreferences(#Appname+".ini")=0
MessageRequester(#Appname,"Configuration file not found, defaults will be applied")
EndIf
PreferenceGroup("ComString")
Port$=ReadPreferenceString("Port","Com1")+": "
Speed$="baud="+ReadPreferenceString("Baud","9600")+" "
Parity$="parity="+ReadPreferenceString("Parity","N")+" "
Dbits$="data="+ReadPreferenceString("Dbits","8")+" "
Sbits$="stop="+ReadPreferenceString("Sbits","1")
Connection$=Port$+Speed$+Parity$+Dbits$+Sbits$
ClosePreferences()
ProcedureReturn Connection$
EndProcedure
Procedure Write_PortPref(WinID)
If IsWindow(WinID)
If CreatePreferences(#Appname+".ini")
PreferenceGroup("ComString")
WritePreferenceString("Port",GetGadgetText(#Combo_Com))
WritePreferenceString("Baud",GetGadgetText(#Combo_Baud))
WritePreferenceString("Parity",GetGadgetText(#Combo_Parity))
WritePreferenceString("Dbits",GetGadgetText(#Combo_Dbits))
WritePreferenceString("Sbits",GetGadgetText(#Combo_Sbits))
PreferenceGroup("ComState")
WritePreferenceLong("Port",GetGadgetState(#Combo_Com))
WritePreferenceLong("Baud",GetGadgetState(#Combo_Baud))
WritePreferenceLong("Parity",GetGadgetState(#Combo_Parity))
WritePreferenceLong("Dbits",GetGadgetState(#Combo_Dbits))
WritePreferenceLong("Sbits",GetGadgetState(#Combo_Sbits))
ClosePreferences()
EndIf
EndIf
EndProcedure
Procedure Open_Window_Main()
If OpenWindow(#Window_Main, 254, 11, 600, 600, #Appname, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If CreateMenu(#MenuBar_0, WindowID(#Window_Main))
MenuTitle("&File")
MenuItem(#MENU_2, "&Setup")
MenuBar()
MenuItem(#MENU_3, "&Connect")
MenuItem(#MENU_4, "&Disconnect")
MenuBar()
MenuItem(#MENU_8, "&Exit")
AddKeyboardShortcut(#Window_Main,#PB_Shortcut_Escape,#Menu_8)
MenuTitle("&Help")
MenuItem(#MENU_13, "&About")
MenuBar()
MenuItem(#MENU_15, "Hel&p")
EndIf
If CreateStatusBar(#StatusBar_0, WindowID(#Window_Main))
EndIf
If CreateGadgetList(WindowID(#Window_Main))
ButtonGadget(#Button_Connect, 20, 20, 60, 20, "Connect")
ButtonGadget(#Button_Disconnect, 90, 20, 60, 20, "Disconnect")
DisableGadget(#Button_Disconnect,1)
EditorGadget(#Editor_DataIn, 20, 50, 560, 490)
EndIf
EndIf
EndProcedure
Procedure Open_Window_Com_Setup()
If OpenWindow(#Window_Com_Setup, 262, 20, 365, 126, #Appname+" Comms Set Up", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_WindowCentered,WindowID(#Window_Main) )
If CreateGadgetList(WindowID(#Window_Com_Setup))
TextGadget(#Text_LabelPort, 15, 15, 45, 20, "ComPort")
TextGadget(#Text_Label_Speed, 105, 15, 50, 20, "Baud rate")
TextGadget(#Text_Label_Data, 190, 15, 30, 20, "D bits")
TextGadget(#Text_Label_Stop, 245, 15, 30, 20, "S bits")
TextGadget(#Text_Label_Parity, 295, 15, 35, 20, "Parity")
ComboBoxGadget(#Combo_Com, 15, 40, 80, 110)
ComboBoxGadget(#Combo_Baud, 100, 40, 85, 110)
ComboBoxGadget(#Combo_Dbits, 190, 40, 50, 110)
ComboBoxGadget(#Combo_Sbits, 245, 40, 50, 105)
ComboBoxGadget(#Combo_Parity, 300, 40, 50, 110)
ButtonGadget(#Button_Setup_Save, 155, 90, 50, 20, "Save")
OpenPreferences(#Appname+".ini")
PreferenceGroup("ComState")
For a=1 To 8
AddGadgetItem(#Combo_Com,-1,"Com"+Str(a))
Next
Comstate=ReadPreferenceLong("Port",0)
SetGadgetState(#Combo_Com,ComState)
Baud=300
For a=1 To 7
AddGadgetItem(#Combo_Baud,-1,Str(Baud))
Baud*2
Next
BaudState=ReadPreferenceLong("Baud",5)
SetGadgetState(#Combo_Baud,BaudState)
For a=1 To 2
AddGadgetItem(#Combo_Dbits,-1,Str(a+6))
AddGadgetItem(#Combo_Sbits,-1,Str(a))
Next
DbitsState=ReadPreferenceLong("Dbits",1)
SbitsState=ReadPreferenceLong("Sbits",0)
SetGadgetState(#Combo_Dbits,DbitsState)
SetGadgetState(#Combo_Sbits,SbitsState)
AddGadgetItem(#Combo_Parity,-1,"N")
AddGadgetItem(#Combo_Parity,-1,"E")
AddGadgetItem(#Combo_Parity,-1,"O")
ParityState=ReadPreferenceLong("Parity",0)
SetGadgetState(#Combo_Parity,ParityState)
ClosePreferences()
EndIf
EndIf
EndProcedure
Procedure Open_Window_About(About$)
If OpenWindow(#Window_About,260,20,350,300,"About "+#Appname,#PB_Window_TitleBar|#PB_Window_WindowCentered,WindowID(#Window_Main))
If CreateGadgetList(WindowID(#Window_About))
TextGadget(#Text_About,10,10,330,240,About$,#PB_Text_Border)
ButtonGadget(#Button_About_Ok,150,270,50,20,"OK")
EndIf
EndIf
EndProcedure
Baldrick.