小胖熊酷数码GPS论坛 www.sosaw.com

 找回密码
 注册register

扫一扫,访问微社区

查看: 734|回复: 2

[一机多图与图标] 咨询忽悠哥一个问题........

[复制链接]
发表于 2019-12-15 10:33 | 显示全部楼层 |阅读模式
分享到:
综合发帖模板
发帖目的: 功能讨论
地图品牌: 其它
测试机型: -
适用系统(可多选): CE6 
地图国别: -
支持分辨率(可多选): 800x480 
资源分类(可多选): 一机多图或图标 
忽悠哥您好!我想请教您一个问题:

对时脚本可用,如下:
Errorlevel("off")
#Display an installation status window
StatusType(ST_MESSAGE)
StatusInfo("GPS Time auto Synchronization")
StatusMessage("Please wait while Synchronizing...")
MyTimeZone = 8                        #Time zone correction that will be applied. Range -12 to +12 (whole hours)
port = "COM7:"                         #Com Port e.g. "COM2:"
timeout = "10000"                 #Com Port TimeOut
baudrate = "38400"                 #Com Port Baud Rate e.g. 56700
length = 512                        #Data Read Length. Enough needs to be read to get the NMEA sentence we need

#Add a '+' to the timezone for displaying
If(MyTimeZone > 0)
         MyTimeZoneStr = "+" & MyTimeZone
Else
         MyTimeZoneStr = MyTimeZone
EndIf

SetComInfo(port, timeout, baudrate)
#  COLD START : $PSRF101,0,0,0,000,0,0,12,6*12
#WriteFile(port,"$PSRF101,0,0,0,000,0,0,12,6*12^CR^^LF^")
#  WARM START : $PSRF101,0,0,0,000,0,0,12,2*16
#WriteFile(port,"$PSRF101,0,0,0,000,0,0,12,2*16^CR^^LF^")
#   HOT START : $PSRF101,0,0,0,000,0,0,12,1*15
#WriteFile(port,"$PSRF101,0,0,0,000,0,0,12,1*15^CR^^LF^")
#FACTORY RESET :$PSRF101,0,0,0,000,0,0,12,8*1C
#WriteFile(port,"$PSRF101,0,0,0,000,0,0,12,8*1C^CR^^LF^")

#WriteFile(port,"$PFST,START,0*61^CR^^LF^")

#WriteFile(port,"$PFST,START^CR^^LF^")
#WriteFile(port,"$PSRF100,1,57600,8,1,0<CR><LF>*36^CR^^LF^")
Done = FALSE
LoopCount = 0
#We loop to see if we can get a reading for . We also delay each subsequent loop by 3 seconds....
StatusMessageAppend("^CR^^CR^Reading Time from GPS Port...")
While(not Done AND LoopCount < 20000)
         LoopCount += 1                                       
         #If(LoopCount > 1)                                                
         #        Sleep(3000)
         #EndIf
         
         data = ReadFile(port, length)
         
         StartPosition = Find(data, "$GPRMC")               
         Done = TRUE                                                        
         EndPosition = Find(data, "*", StartPosition)
         BitIWant=SubStr(data, StartPosition, EndPosition-StartPosition+3)        
         
                 
         Time = Part(BitIWant, ",", 2)                        
         Date = Part(BitIWant, ",", 10)
#This next section tests that if the year is less than 2009, then the year recieved is false!
                 
         If(Eval(SubStr(Date, 5, 2))<09)
                         Done=False
                         #StatusMessage(StartPosition&" "&EndPosition&" "&BitIWant)
                         If(LoopCount mod 2=0)
                         StatusMessageAppend(".")
                         Else
                         StatusMessageAppend("*")
                         Endif
         
         #StartPosition = Find(data, "$GPGGA")               
                                                                 
         #EndPosition = Find(data, "*", StartPosition)
         #BitIWant2=SubStr(data, StartPosition, EndPosition-StartPosition+3)        
                 
                 
         #StartPosition = Find(data, "$GPGSA")               
                                                                 
         #EndPosition = Find(data, "*", StartPosition)
         #BitIWant3=SubStr(data, StartPosition, EndPosition-StartPosition+3)        
         #StatusMessage(BitIWant&"^CR^"&BitIWant2&"^CR^"&BitIWant3)        
         EndIf
EndWhile
#If we still haven't gotten a time reading, we need to exit.....
If(not Done)
         StatusMessageAppend("^CR^^CR^***** Error ***** Getting the date and time from memory failed. Exiting...")
         Exit
EndIf
StatusMessageAppend("Done!")
#########################
#                        #
# Clean up Numbers        #
#                        #
#########################
#Convert Strings to numbers
TimeHourUTC = Eval(SubStr(Time, 1, 2))
TimeMinuteUTC = Eval(SubStr(Time, 3, 2))
TimeSecondUTC = Eval(SubStr(Time, 5, 2))
#We copy these across because some will be the same. Only those that need to change will be changed
TimeHourZone = TimeHourUTC
TimeMinuteZone = TimeMinuteUTC
TimeSecondZone = TimeSecondUTC
DateDayUTC = Eval(SubStr(Date, 1, 2))
DateMonthUTC = Eval(SubStr(Date, 3, 2))
DateYearUTC = 2000 + Eval(SubStr(Date, 5, 2))          ### Y2k Strikes again! ###
DateDayZone = DateDayUTC
DateMonthZone = DateMonthUTC
DateYearZone = DateYearUTC

#########################
#                        #
# Verify valid date        #
#                        #
#########################
If(DateYearZone < 2009)
         StatusMessageAppend("^CR^^CR^***** Error ***** The date and time in memory are out-of-date and need to be synchronized. Run MioMap or another GPS app to synchronize them with the satellites. Exiting...")
         StatusMessageAppend("^CR^^CR^Error Code="&DateYearZone)
         Exit
EndIf

#########################
#                        #
# Correct for time zone #
#                        #
#########################
TimeHourZone = TimeHourUTC + MyTimeZone

#########################################
#                                        #
# Correct for next/previous day.         #
#                                        #
#########################################
If(TimeHourZone > 23)
         TimeHourZone -= 24
         #We need to add a day, which is not simple, since not all months have the same length
         DateDayZone += 1
         If(DateDayZone > 31 OR ((DateMonthZone = 4 OR DateMonthZone = 6 OR DateMonthZone = 8 OR DateMonth Zone = 11) AND DateDayZone > 30) OR (DateYearZone MOD 4 > 0 AND DateMonthZone = 2 AND DateDayZone > 28) OR (DateYearZone MOD 4 = 0 AND DateMonthZone = 2 AND DateDayZone > 29))
                 DateDayZone = 1
                 DateMonthZone += 1
                 If(DateMonthZone > 12)
                         DateMonthZone = 1
                         DateYearZone += 1
                 EndIf
         EndIf
ElseIf(TimeHourZone < 0)
         TimeHourZone += 24
         #We need to subtract a day
         DateDayZone -= 1
         If(DateDayZone = 0)
                 DateMonthZone -= 1
                 Switch(DateMonthZone)
                 Case(1, 3, 5, 7, 9, 10, 12)
                         DateDayZone = 31
                 Case(4, 6, 8, 11)
                         DateDayZone = 30
                 Case(2)
                         If (DateYearZone Mod 4=0)
                                 DateDayZone = 29
                         Else
                                 DateDayZone = 28
                         EndIf
                 EndSwitch
         EndIf
EndIf

#########################################
#                                        #
# Display UTC & Zone times                 #
#                                        #
#########################################
FormatedDateTimeUTC = SubStr("0" & DateDayUTC, -2) & "/" & Substr("0" & DateMonthUTC, -2) & "/20" & SubStr("0" & DateYearUTC, -2) & " " & SubStr("0" & TimeHourUTC, -2) & ":" & SubStr("0" & TimeMinuteUTC, -2)
FormatedDateTimeZone = SubStr("0" & DateDayZone, -2) & "/" & Substr("0" & DateMonthZone, -2) & "/20" & SubStr("0" & DateYearZone, -2) & " " & SubStr("0" & TimeHourZone, -2) & ":" & SubStr("0" & TimeMinuteZone, -2)
#StatusMessageAppend("^CR^UTC date/time: " & FormatedDateTimeUTC)
StatusMessageAppend("^CR^^CR^Our date/time: " & FormatedDateTimeZone)

#########################################
#                                        #
# Update System Date & Time                 #
#                                        #
#########################################
StatusMessageAppend("^CR^^CR^Update System Date & Time...")
SetTime(TimeHourZone,TimeMinuteZone,TimeSecondZone)
SetDate(DateDayZone,DateMonthZone,DateYearZone)
StatusMessageAppend("Done!")
StatusMessageAppend("Done!")
StatusMessageAppend("^CR^^CR^Press OK blow to Enjoy!")


我的想法是需要制作一个执行文件,比如文件名:Navigation.exe
执行完以上脚本后,不再占用com7端口,然后再执行一机多图文件名比如app.exe,如何解决?
谢谢!
 楼主| 发表于 2019-12-16 00:42 | 显示全部楼层
调用问题解决了,但是脚本本身不知道怎么修改:
If(DateYearZone < 2009)
          StatusMessageAppend("^CR^^CR^***** Error ***** The date and time in memory are out-of-date and need to be synchronized. Run MioMap or another GPS app to synchronize them with the satellites. Exiting...")
          StatusMessageAppend("^CR^^CR^Error Code="&DateYearZone)
          Exit
EndIf

这一段机器相关内容去掉或改成2099等,都不行。我完全不懂脚本描述。

点评

不好意思!编程是窍窍不通,请找本坛大师帮忙!  发表于 2019-12-16 12:51
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册register

本版积分规则

百度SITEMAP|小黑屋|Archiver|手机版|小胖熊酷数码GPS论坛 www.sosaw.com ( 沪ICP备16050520号-1 )|网站地图 

GMT+8, 2020-3-31 07:19 , Processed in 0.224776 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表