| 
 | 
 
以下是完整程式範例, 
 
我的問題是,要如何刪除簡化這些指令, 
因為我只想要接收$GPGGA,xxxx,x0xx,E,x.xx,N,.......的這種資料 
想請各位懂BASIC STAMP的高手幫我解答。 
' -----[ I/O Definitions ]------------------------------------------------- 
 
Sio             PIN     15     ' connects to GPS Module SIO pin 
 
 
' -----[ Constants ]------------------------------------------------------- 
 
T4800           CON     188 
Open            CON     $8000 
 
Baud            CON     Open | T4800    ' Open mode to allow daisy chaining 
 
MoveTo          CON     2     ' DEBUG positioning command 
ClrRt           CON     11    ' clear line right of cursor 
FieldLen        CON     22    ' length of debug text 
 
EST             CON     -5    ' Eastern Standard Time 
CST             CON     -6    ' Central Standard Time 
MST             CON     -7    ' Mountain Standard Time 
PST             CON     -8    ' Pacific Standard Time 
 
EDT             CON     -4    ' Eastern Daylight Time 
CDT             CON     -5    ' Central Daylight Time 
MDT             CON     -6    ' Mountain Daylight Time 
PDT             CON     -7    ' Pacific Daylight Time 
 
UTCfix          CON     PST   ' for San Diego, California 
 
DegSym          CON     176   ' degrees symbol for report 
MinSym          CON     39    ' minutes symbol 
SecSym          CON     34    ' seconds symbol 
 
' GPS Module Commands 
GetInfo         CON     $00 
GetValid        CON     $01 
GetSats         CON     $02 
GetTime         CON     $03 
GetDate         CON     $04 
GetLat          CON     $05 
GetLong         CON     $06 
GetAlt          CON     $07 
GetSpeed        CON     $08 
GetHead         CON     $09 
 
' -----[ Variables ]------------------------------------------------------- 
 
char      VAR      Byte 
workVal   VAR      Word     ' for numeric conversions 
eeAddr    VAR      workVal  ' pointer to EE data 
 
ver_hw    VAR      Byte 
ver_fw    VAR      Byte 
 
valid     VAR      Byte     ' signal valid? 0 = not valid, 1 = valid 
sats      VAR      Byte     ' number of satellites used in positioning calculations 
 
tmHrs     VAR      Byte     ' time fields 
tmMins    VAR      Byte 
tmSecs    VAR      Byte 
 
day       VAR      Byte     ' day of month, 1-31 
month     VAR      Byte     ' month, 1-12 
year      VAR      Byte     ' year, 00-99 
 
degrees   VAR      Byte     ' latitude/longitude degrees 
minutes   VAR      Byte     ' latitude/longitude minutes 
minutesD  VAR      Word     ' latitude/longitude decimal minutes 
dir       VAR      Byte     ' direction (latitude: 0 = N, 1 = S, longitude: 0 = E, 1 = W) 
 
heading   VAR      Word     ' heading in 0.1 degrees 
alt       VAR      Word     ' altitude in 0.1 meters 
speed     VAR      Word     ' speed in 0.1 knots 
 
 
' -----[ EEPROM Data ]----------------------------------------------------- 
 
NotValid        DATA    "No", 0 
IsValid         DATA    "Yes", 0 
DaysInMon       DATA    31,28,31,30,31,30,31,31,30,31,30,31 
MonNames        DATA    "JAN",0,"FEB",0,"MAR",0,"APR",0,"MAY",0,"JUN",0 
                DATA    "JUL",0,"AUG",0,"SEP",0,"OCT",0,"NOV",0,"DEC",0 
 
 
' -----[ Initialization ]-------------------------------------------------- 
 
Initialize: 
  PAUSE 250  ' let DEBUG open 
  DEBUG CLS  ' clear the screen 
  DEBUG "Parallax GPS Receiver Module Test Application", CR, 
        "---------------------------------------------" 
 
Draw_Data_Labels: 
  DEBUG MoveTo, 0, 3,  "    Hardware Version: " 
  DEBUG MoveTo, 0, 4,  "    Firmware Version: " 
  DEBUG MoveTo, 0, 6,  "        Signal Valid: " 
  DEBUG MoveTo, 0, 7,  " Acquired Satellites: " 
  DEBUG MoveTo, 0, 9,  "          Local Time: " 
  DEBUG MoveTo, 0, 10, "          Local Date: " 
  DEBUG MoveTo, 0, 12, "            Latitude: " 
  DEBUG MoveTo, 0, 13, "           Longitude: " 
  DEBUG MoveTo, 0, 14, "            Altitude: " 
  DEBUG MoveTo, 0, 15, "               Speed: " 
  DEBUG MoveTo, 0, 16, " Direction of Travel: " 
' -----[ Program Code ]---------------------------------------------------- 
 
Main: 
  GOSUB Get_Info 
  GOSUB Get_Valid 
  GOSUB Get_Sats 
  GOSUB Get_TimeDate 
  GOSUB Get_Lat 
  GOSUB Get_Long 
  GOSUB Get_Alt 
  GOSUB Get_Speed 
  GOSUB Get_Head 
  GOTO Main 
--------------------------------------------------------------- 
Get_Lat: 
  SEROUT Sio, Baud, ["!GPS", GetLat] 
  SERIN  Sio, Baud, 3000, No_Response, [degrees, minutes, minutesD.HIGHBYTE, minutesD.LOWBYTE, dir] 
 
  ' convert decimal minutes to tenths of seconds 
  workVal = minutesD ** $0F5C  ' minutesD * 0.06 
 
  DEBUG MoveTo, FieldLen, 12, DEC3 degrees, DegSym, " ", DEC2 minutes, MinSym, " " 
  DEBUG DEC2 (workVal / 10), ".", DEC1 (workVal // 10), SecSym, " " 
  DEBUG "N" + (dir * 5) 
 
  ' convert to decimal format, too 
  workVal = (minutes * 1000 / 6) + (minutesD / 60) 
  DEBUG " (", " " + (dir * 13), DEC degrees, ".", DEC4 workVal, " )   " 
  RETURN 
 
' ----------------------------從這裡開始副程式------------------------ 
 
Get_Long: 
  SEROUT Sio, Baud, ["!GPS", GetLong] 
  SERIN  Sio, Baud, 3000, No_Response, [degrees, minutes, minutesD.HIGHBYTE, minutesD.LOWBYTE, dir] 
 
  ' convert decimal minutes to tenths of seconds 
  workVal = minutesD ** $0F5C  ' minutesD * 0.06 
 
  DEBUG MoveTo, FieldLen, 13, DEC3 degrees, DegSym, " ", DEC2 minutes, MinSym, " " 
  DEBUG DEC2 (workVal / 10), ".", DEC1 (workVal // 10), SecSym, " " 
  DEBUG "E" + (dir * 18) 
 
  ' convert to decimal format, too 
  workVal = (minutes * 1000 / 6) + (minutesD / 60) 
  DEBUG " (", " " + (dir * 13), DEC degrees, ".", DEC4 workVal, " ) " 
  RETURN 
 
以上我要如何刪除運算子運算?? 
這個問題希望各位能幫我解答,緊急需求,謝謝!! |   
 
 
 
 |