2. When i do following test it works to connect on COM3:
Code: Select all
If OpenSerialPort(0, "COM3", 300, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Debug "Success - But how do i read any packets here???????????? to keep it simple reader??????????"
Else
Debug "Failed"
EndIf
4. Failed samples
Fail 1:
Code: Select all
; English forum: http://www.purebasic.fr/english/viewtopic.php?t=7427
; Author: clipper
; Date: 03. September 2003
; OS: Windows
; Demo: No
; GPS How to receive NMEA Data over a serial-port with MVCom
; ----------------------------------------------------------
; Simple Example to receive NMEA-Sentences over Com1 with PureBasic and the
; MVCom Library of Marc Vitry http://www.purearea.net/pb/download/userlibs/MVCOM_LIBRARY.zip
; by Thomas Ott - tom@medi-a.de
; Information about the NMEA-Protocoll http://www.nmea.de/nmea0183datensaetze.html
#FRAME_1 = 0
#TEXT_1 = 1
#TEXT_2 = 2
#FRAME_2 = 3
#BUTTON_1 = 4
#BUTTON_2 = 5
#LISTVIEW_1=6
#Window_0=0
Global HCom.l
Global NMEA.s
ComPortSettings.s="COM3:4800,N,8,1"
Procedure TimerProc(WindowID.l, nIDEvent.l, uElapse.l, lpTimerFunc.l)
If HCom > 0
Car.s = "."
While ComInputBufferCount(HCom) > 0
If ComInput(HCom,Car)
If Car=Chr(10)
AddGadgetItem(#LISTVIEW_1, -1,NMEA)
If Left(NMEA,6)= "$GPGLL"
SetGadgetText(#TEXT_1,StringField(NMEA,2,",")+StringField(NMEA,3,","))
SetGadgetText(#TEXT_2,StringField(NMEA,4,",")+StringField(NMEA,5,","))
EndIf
NMEA=""
Else
NMEA=NMEA+Car
EndIf
EndIf
Wend
EndIf
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 435, 369, 300,130, "NMEA",#PB_Window_SystemMenu | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
Frame3DGadget(#FRAME_1, 0, 0, 100, 20, "", #PB_Frame3D_Single)
TextGadget(#TEXT_1, 3, 3, 90, 15, "", #PB_Text_Center)
TextGadget(#TEXT_2, 103, 3, 90, 15, "", #PB_Text_Center)
Frame3DGadget(#FRAME_2, 101, 0, 100, 20, "", #PB_Frame3D_Single)
ButtonGadget(#BUTTON_1, 201, 0, 50, 20, "Start")
ButtonGadget(#BUTTON_2, 250, 0, 50, 20, "Clear")
ListViewGadget(#LISTVIEW_1, 0, 20, 300, 110)
EndIf
EndIf
EndProcedure
Open_Window_0()
SetTimer_(WindowID(#Window_0),1,100,@TimerProc())
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
GadgetID = EventGadget()
Select GadgetID
Case #BUTTON_1
If HCom > 0
ComClose(HCom)
HCom=0
SetGadgetText(#BUTTON_1,"Start")
Else
HCom=ComOpen(ComPortSettings,0,256,0)
If HCom=-1
MessageRequester("NMEA","Error opening the ComPort",0)
Else
SetGadgetText(#BUTTON_1,"Stop")
EndIf
EndIf
Case #BUTTON_2
ClearGadgetItemList(#LISTVIEW_1)
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
KillTimer_(WindowID(#Window_0),1)
If HCom > 0
ComClose(HCom)
EndIf
End
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
Code: Select all
#Version = "1.01"
Enumeration
#Output1
#Output2
#Output3
#Logging
#Button
#Time
EndEnumeration
Procedure Logging(T1$, T2$, T3$)
Protected File.i, Line$
File = OpenFile(#PB_Any, ReplaceString(ProgramFilename(), ".exe", ".csv"))
If File
FileSeek(File, Lof(File))
Line$ = #DQUOTE$ + FormatDate("%yyyy%mm%dd %yy%ii%ss", Date()) + #DQUOTE$ + ";"
Line$ + #DQUOTE$ + T1$ + #DQUOTE$ + ";"
Line$ + #DQUOTE$ + T2$ + #DQUOTE$ + ";"
Line$ + #DQUOTE$ + T3$ + #DQUOTE$
WriteStringN(File, Line$)
EndIf
EndProcedure
Com = OpenSerialPort(#PB_Any, "COM3", 1200, #PB_SerialPort_NoParity, 7, 2, #PB_SerialPort_NoHandshake, 64, 64)
If Not Com
MessageRequester("Error", "Can not open COM port!")
End
EndIf
OpenWindow(0, 0, 0, 190, 100, "MeterReader V" + #Version, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#Output1, 10, 10, 40, 20, "", #PB_Text_Border|#PB_Text_Center)
TextGadget(#Output2, 60, 10, 60, 20, "", #PB_Text_Border|#PB_Text_Center)
TextGadget(#Output3, 130, 10, 40, 20, "", #PB_Text_Border|#PB_Text_Center)
CheckBoxGadget(#Logging, 120, 50, 60, 20, "Logging")
ButtonGadget(#Button, 10, 50, 60, 20, "Start")
SpinGadget(#Time, 80, 50, 30, 20, 1, 60, #PB_Spin_Numeric)
SetGadgetState(#Time, 1)
CreateStatusBar(0, WindowID(0))
AddStatusBarField(50)
Buffer$ = Space(14)
Exit = #False
Repeat
Event = WaitWindowEvent(100)
Select Event
Case #PB_Event_Timer
If EventTimer() = 1
WriteSerialPortString(Com, "D")
StatusBarText(0, 0, "read", #PB_StatusBar_Center)
If FirstTime
RemoveWindowTimer(0, 1)
AddWindowTimer(0, 1, GetGadgetState(#Time) * 1000)
FirstTime = #False
EndIf
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #Button
If GetGadgetText(#Button) = "Start"
SetGadgetText(#Button, "Stop")
DisableGadget(#Time, #True)
SetGadgetText(#Output1, "")
SetGadgetText(#Output2, "")
SetGadgetText(#Output3, "")
AddWindowTimer(0, 1, 1)
FirstTime = #True
Else
RemoveWindowTimer(0, 1)
SetGadgetText(#Button, "Start")
DisableGadget(#Time, #False)
StatusBarText(0, 0, "")
EndIf
Case #Time
EndSelect
Case #PB_Event_CloseWindow
Exit = #True
EndSelect
If AvailableSerialPortInput(Com) >= 14
ReadSerialPortData(Com, @Buffer$, 14)
SetGadgetText(#Output1, Trim(Mid(Buffer$, 1, 3)))
SetGadgetText(#Output2, Trim(Mid(Buffer$, 4, 6)))
SetGadgetText(#Output3, Trim(Mid(Buffer$, 10, 4)))
If GetGadgetState(#Logging)
Logging(GetGadgetText(#Output1), GetGadgetText(#Output2), GetGadgetText(#Output3))
EndIf
StatusBarText(0, 0, "")
EndIf
Until Exit
CloseSerialPort(Com)
CloseWindow(0)