{"id":830,"date":"2017-08-23T18:52:30","date_gmt":"2017-08-23T10:52:30","guid":{"rendered":"http:\/\/www.rotor.com.tw\/?p=830"},"modified":"2020-08-05T01:56:01","modified_gmt":"2020-08-04T17:56:01","slug":"tekit%e7%b3%bb%e5%88%97%e5%a5%97%e4%bb%b6-%e7%94%a2%e5%93%81tekit001","status":"publish","type":"post","link":"https:\/\/www.rotor.com.tw\/?p=830","title":{"rendered":"\u7522\u54c1TeKit001-\u539f\u7406\u5716&#038;\u7a0b\u5f0f\u78bc"},"content":{"rendered":"<p style=\"text-align: center;\">TeKit\u7cfb\u5217\u5957\u4ef6\u7d42\u65bc\u4e0a\u5e02<\/p>\n<p style=\"text-align: center;\">\u6b64\u5957\u4ef6\u662f\u7531\u5148\u524d\u5c08\u6848\u884d\u751f\u51fa\u7684\u7522\u54c1<\/p>\n<p style=\"text-align: center;\">TeKit001\u904b\u4f5c\u539f\u7406\u5982\u4e0b\u5716<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-831\" src=\"https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?resize=584%2C279&#038;ssl=1\" alt=\"download\" width=\"584\" height=\"279\" srcset=\"https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?w=963&amp;ssl=1 963w, https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?resize=300%2C143&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?resize=768%2C367&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/download.jpg?resize=500%2C239&amp;ssl=1 500w\" sizes=\"(max-width: 584px) 100vw, 584px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u900f\u904e\u5916\u90e8\u611f\u6e2c\u5668\u6536\u96c6\u8cc7\u6599\u9032\u5165Arduino<\/p>\n<p style=\"text-align: center;\">Arduino\u6703\u5c07\u6536\u96c6\u5230\u7684\u8cc7\u6599\u9032\u884c\u7be9\u9078<\/p>\n<p style=\"text-align: center;\">\u6700\u5f8c\u5c07\u7be9\u9078\u5b8c\u7684\u8cc7\u6599\u4e0a\u50b3\u81f3\u96f2\u7aef<\/p>\n<p style=\"text-align: center;\">\u9019\u6a23\u7684\u904b\u4f5c\u539f\u7406\u662f\u7269\u806f\u7db2\u524d\u7aef(\u8cc7\u6599\u8490\u96c6)<\/p>\n<p style=\"text-align: center;\">\u7b49\u5f85\u8490\u96c6\u7684\u8cc7\u6599\u5927\u904e\u4e00\u5b9a\u6578\u91cf\u5c31\u6210\u4e86\u5927\u6578\u64da<\/p>\n<p style=\"text-align: center;\"><!--more--><\/p>\n<p style=\"text-align: center;\">\u9019\u908a\u4f7f\u7528\u7684\u96f2\u7aef\u70baThingSpeak<\/p>\n<p style=\"text-align: center;\">\u7db2\u8def\u4e0a\u6709\u8a31\u591a\u95dc\u65bcThingSpeak\u4ecb\u7d39<\/p>\n<p style=\"text-align: center;\">\u5982\u5c1a\u672a\u7533\u8acbThingSpeak\u5e33\u865f\u8acb\u900f\u904e\u4ee5\u4e0b\u9023\u7d50\u9032\u5165\u7533\u8acb<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/thingspeak.com\/users\/sign_up\" target=\"_blank\" rel=\"noopener noreferrer\">ThingSpeak\u8a3b\u518a<\/a><\/p>\n<p style=\"text-align: center;\">\u8acb\u53d6\u5f97Write API Key<\/p>\n<p style=\"text-align: center;\">\u4e0d\u6e05\u695a\u7684\u670b\u53cb\u53ef\u4ee5\u53c3\u8003<a href=\"https:\/\/www.rotor.com.tw\/?p=816\" target=\"_blank\" rel=\"noopener noreferrer\">\u9019\u7bc7<\/a>\u53d6\u5f97Write API Key<\/p>\n<p style=\"text-align: center;\">(\u6ce8\u610f\u6587\u7ae0\u6559\u5b78\u662f\u53d6\u5f97Read API Key\uff0c\u672c\u6b21\u9808\u53d6\u5f97Write API Key\uff0c\u4e0d\u8981\u641e\u932f\u779c)<\/p>\n<p style=\"text-align: center;\">\u7522\u54c1TeKit001\u7a0b\u5f0f\u78bc\u5982\u4e0b<\/p>\n<p style=\"text-align: center;\">\u6700\u4e0b\u65b9\u6709\u6a94\u6848\u53ef\u76f4\u63a5\u4e0b\u8f09\u670d\u7528<\/p>\n<p style=\"text-align: left;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\u7a0b\u5f0f\u958b\u59cb&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>\/\/Power_LED \u7d05\u8272(11) \u8a2d\u5b9a\u70ba\u96fb\u6e90\u71c8\u3001TRX_LED \u7da0\u8272(12) \u8cc7\u6599\u4e0a\u50b3\u96f2\u7aef\u5beb\u5165\u71c8\u865f\u3001GPSLED \u9ec3\u8272(13) GPS\u5b9a\u4f4d\u71c8<br \/>\n\/\/\u8acb\u4fee\u6539\u7b2c55\u884c\uff0cn5\u6539\u70baWIFI\u7684SSID\uff0c09320932\u6539\u70baWIFI \u9023\u7dda\u5bc6\u78bc\uff0c\u5982WIFI SSID\u70baAndroid\uff0c\u5bc6\u78bc\u70ba1234567890\uff0c\u8acb\u4fee\u6539\u5982\u4e0b<br \/>\n\/\/fSendCmd(&#8220;AT+CWJAP=\\&#8221;Android\\&#8221;,\\&#8221;1234567890\\&#8221;&#8221;)<br \/>\n\/\/\u8acb\u4fee\u6539\u7b2c99\u884c\uff0cString sHTTPContent2 = &#8220;GET \/update?api_key=XXXXXXXX&#8221;;<br \/>\n\/\/\u5c07XXXXXXXX\u6539\u70ba\u81ea\u8eabThingSpeak \u5c08\u5c6c\u7684Write API Key<\/p>\n<p>#include<br \/>\n#include<br \/>\nSoftwareSerial ESP8266 (8, 9); \/\/ TX\u3001RX<br \/>\n#define GpsSerial Serial<\/p>\n<p>\/\/\u767c\u9001AT CMD<br \/>\nbool fSendCmd(String sCMD, String sCMD2=&#8221;&#8221;);<\/p>\n<p>dht DHT;<br \/>\n#define dht_dpin 2<br \/>\nint Power_LED = 11; \/\/\u7da0<br \/>\nint TRX_LED = 13 ; \/\/\u9ec3<\/p>\n<p>\/\/GPS \u76f8\u95dc\u8b8a\u6578<br \/>\nString latitude; \/\/\u7def\u5ea6<br \/>\nString longitude; \/\/\u7d93\u5ea6<br \/>\nString lndSpeed; \/\/\u901f\u5ea6<br \/>\nString gpsTime; \/\/UTC\u6642\u9593<br \/>\nString TaipeiTime; \/\/\u53f0\u5317\u6642\u9593(UTC +8\u5c0f\u6642)<br \/>\nString GpsDate; \/\/GPS\u65e5\u671f<br \/>\nString GpsAV; \/\/\u5b9a\u4f4d\u662f\u5426\u6709\u6548<br \/>\nint GPSLED =11; \/\/ GPS\u5b9a\u4f4d\u71c8\u865f(\u7d05)<\/p>\n<p>void setup() {<br \/>\nSerial.begin(115200);<br \/>\nESP8266.begin(9600);<br \/>\nGpsSerial.begin(9600);<br \/>\nSerial.print(&#8220;Power On Self Test&#8230;&#8230;&#8230;..&#8221;);<br \/>\npinMode(Power_LED, OUTPUT);<br \/>\npinMode(GPSLED, OUTPUT);<br \/>\npinMode(TRX_LED, OUTPUT);<br \/>\ndigitalWrite(Power_LED, HIGH);<br \/>\ndigitalWrite(GPSLED, HIGH);<br \/>\ndigitalWrite(TRX_LED, HIGH);<br \/>\ndelay(2000);<br \/>\ndigitalWrite(GPSLED, LOW);<br \/>\ndigitalWrite(TRX_LED, LOW);<br \/>\nSerial.println(&#8220;Finish&#8221;);<br \/>\nSerial.println();<br \/>\nfSendCmd(&#8220;AT+CWMODE=1&#8221;);<br \/>\ndelay(300);<br \/>\nSerial.println(&#8220;Setup Config &#8230;&#8230;&#8230;..Finish&#8221;) ;<\/p>\n<p>\/\/\u9023\u5165AP<br \/>\nSerial.println(&#8220;Connected to AP &#8220;);<br \/>\nfSendCmd(&#8220;AT+CWJAP=\\&#8221;n5\\&#8221;,\\&#8221;09320932\\&#8221;&#8221;);\/\/\u8acb\u4fee\u6539\u6b32\u9023\u7ddaWIFI\u7684SSID\u8207\u5bc6\u78bc<br \/>\ndelay(3000);<br \/>\n\/\/ \u986f\u793aIP<br \/>\nSerial.println(&#8220;Show IP&#8221;);<br \/>\nfSendCmd(&#8220;AT+CIFSR&#8221;);<br \/>\ndelay(1000);<\/p>\n<p>}<\/p>\n<p>void loop(){<br \/>\n\/\/\u5efa\u7acbTCP\u9023\u7dda<br \/>\nSerial.println(&#8220;Create a TCP connection&#8221;);<br \/>\nfSendCmd(&#8220;AT+CIPSTART=\\&#8221;TCP\\&#8221;,\\&#8221;184.106.153.149\\&#8221;,80&#8243;);<\/p>\n<p>\/\/\u53d6\u6fd5\u5ea6<br \/>\nDHT.read11(dht_dpin);<br \/>\nSerial.print(&#8220;Current humidity = &#8220;);<br \/>\nSerial.print(DHT.humidity);<br \/>\nSerial.print(&#8220;% &#8220;);<\/p>\n<p>\/\/\u53d6\u6eab\u5ea6<br \/>\nSerial.print(&#8220;temperature = &#8220;);<br \/>\nSerial.print(DHT.temperature);<br \/>\nSerial.println(&#8220;C &#8220;);<\/p>\n<p>\/\/\u53d6GPS\u8cc7\u6599<br \/>\nSerial.println(GPS_Read());<\/p>\n<p>\/\/\u53d6GPS\u8a0a\u865f\uff0c\u5982\u5b9a\u4f4d\u6210\u529f GPSLED \u71c8\u865f\u4eae\uff0c \u5b9a\u4f4d\u72c0\u614b:A\u6210\u529f\uff0cV\u5931\u6557<br \/>\nif (GpsAV=&#8221;A&#8221;){<br \/>\ndigitalWrite(GPSLED, HIGH);<br \/>\n}<\/p>\n<p>\/\/\u8b80\u53d6\u6eab\u6fd5\u5ea6\u6578\u503c\uff0c\u5206\u5225\u5beb\u5165\u5169\u500b\u8b8a\u6578<br \/>\ndouble humidity = DHT.humidity;<br \/>\ndouble temperature=DHT.temperature;<br \/>\n\/\/ESP8266 \u4e0a\u50b3\u8cc7\u6599<br \/>\n\/\/\u7d93\u5ea6&amp;\u7def\u5ea6\u8cc7\u6599\u7d44\u5408<br \/>\nString sHTTPContent4 = &#8220;&amp;field3=&#8221; + longitude + &#8220;&amp;field4=&#8221; + latitude;<br \/>\n\/\/\u6eab\u5ea6&amp;\u6fd5\u5ea6 \u8cc7\u6599\u7d44\u5408 \u5099\u8a3b\uff1aString(humidity) \u5c07double \u8f49\u70baString\uff0c\u96f2\u7aef\u63a5\u6536\u8cc7\u6599\u7684\u578b\u614b\u70baString<br \/>\nString sHTTPContent3 = &#8220;&amp;field1=&#8221; + String(humidity) + &#8220;&amp;field2=&#8221; + String(temperature);<br \/>\n\/\/ThingSpeak \u4e0a\u50b3\u8cc7\u6599<br \/>\ndigitalWrite(TRX_LED, HIGH);<br \/>\nString sHTTPContent2 = &#8220;GET \/update?api_key=XXXXXXXX&#8221;;\/\/\u8acb\u4fee\u6539\u6210\u70ba\u81ea\u5df1\u5c08\u5c6c\u7684Write API Key<br \/>\nString sHTTPContent1 = &#8220;AT+CIPSEND=&#8221;;<br \/>\nsHTTPContent3 += sHTTPContent4;<br \/>\nsHTTPContent2 += sHTTPContent3;<br \/>\nsHTTPContent1 += sHTTPContent2.length() +2;<br \/>\nfSendCmd(sHTTPContent1,sHTTPContent2);<\/p>\n<p>\/\/\u95dc\u9589TCP\u9023\u7dda<br \/>\nSerial.println(&#8220;Close TCP connection&#8221;);<br \/>\nfSendCmd(&#8220;AT+CIPCLOSE&#8221;);<\/p>\n<p>digitalWrite(TRX_LED, LOW);<br \/>\ndelay(20000);\/\/\u4e0a\u50b3\u8cc7\u6599\u7684\u983b\u7387<\/p>\n<p>}<\/p>\n<p>\/\/\u767c\u9001AT CMD<br \/>\nbool fSendCmd(String sCMD, String sCMD2=&#8221;&#8221;){<br \/>\nunsigned long start;<br \/>\n\/\/1.\u78ba\u8a8d\u88dd\u7f6e\u662f\u5426\u6b63\u5e38\u56de\u61c9OK<br \/>\nString inData=&#8221;&#8221;;<br \/>\nESP8266.println(&#8220;AT&#8221;);<br \/>\nfor (start = millis(); millis() &#8211; start &lt; 100;){ \/\/\u7b49\u5019100ms(time out)\u63a5\u6536RS232\u8cc7\u6599<br \/>\nwhile (ESP8266.available()){<br \/>\n\/\/inData += ESP8266.readStringUntil(&#8216;\\n&#8217;);<br \/>\ninData += ESP8266.readString();<br \/>\nstart = millis(); \/\/\u91cd\u7f6e\u7b49\u5f85\u6642\u9593<br \/>\n}<br \/>\n}<\/p>\n<p>Serial.print(&#8220;ESP8266 Check hot-bit: &#8220;);<br \/>\nSerial.println(inData);<\/p>\n<p>\/\/\u5224\u5b9a\u7121\u56de\u61c9OK, \u8996\u70ba\u88dd\u7f6e\u4e0d\u6b63\u5e38\uff0c\u96e2\u958b\u767c\u9001\u526f\u7a0b\u5f0f\u3002<br \/>\nif (inData.indexOf(&#8220;OK&#8221;) == -1){<br \/>\nreturn false;<br \/>\n}<\/p>\n<p>\/\/2.\u767c\u9001\u547d\u4ee4\u81f3ESP8266\u88dd\u7f6e<br \/>\ninData=&#8221;&#8221;;<br \/>\nSerial.print(&#8220;ESP8266 Sending sCMD: &#8220;);<br \/>\nSerial.println(sCMD);<br \/>\nESP8266.println(sCMD);<br \/>\nfor (start = millis(); millis() &#8211; start &lt; 15000;){ \/\/\u7b49\u501915000ms(time out)\u63a5\u6536RS232\u8cc7\u6599 while (ESP8266.available()){ inData += ESP8266.readString(); start = millis(); \/\/\u91cd\u7f6e\u7b49\u5f85\u6642\u9593 } \/\/\u7576\u6536\u5230OK \u6216\u662f ERROR \u5b57\u4e32\u6642\uff0c\u8868\u793aAT CMD \u5df2\u5b8c\u6210\uff0c\u4e0d\u9700\u8981\u7b49\u5f85 Time Out\u6642\u9593 if ((inData.indexOf(&#8220;OK&#8221;) &gt;=0) or (inData.indexOf(&#8220;ERROR&#8221;) &gt;=0) or (inData.indexOf(&#8220;&gt;&#8221;) &gt;=0)){<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\nSerial.println(&#8220;ESP8266 Get Response: &#8220;);<br \/>\nSerial.println(inData);<\/p>\n<p>\/\/\u5224\u65b7\u6709\u7b2c\u4e8c\u5c64AT CMD \u63d0\u793a\u7b26\u865f&#8221;&gt;&#8221;\uff0c\u9032\u5165\u7b2c\u4e8c\u5c64\u4e26\u767c\u9001\u547d\u4ee4<br \/>\nif (inData.indexOf(&#8220;&gt;&#8221;) &gt;=0){<br \/>\nSerial.print(&#8220;ESP8266 Sending L2 CMD&gt;&#8221;);<br \/>\nSerial.println(sCMD2);<br \/>\nESP8266.println(sCMD2);<\/p>\n<p>\/\/\u7b2c\u4e8c\u5c64\u547d\u4ee4\u767c\u9001\u5f8c\uff0c\u7b49\u5019ESP8266\u56de\u61c9\uff0c\u4e26\u5224\u5225OK \u6216\u662f ERROR<br \/>\nfor (start = millis(); millis() &#8211; start &lt; 5000;){ \/\/\u7b49\u50195000ms(time out)\u63a5\u6536RS232\u8cc7\u6599 while (ESP8266.available()){ inData += ESP8266.readString(); start = millis(); \/\/\u91cd\u7f6e\u7b49\u5f85\u6642\u9593 } \/\/\u7576\u6536\u5230OK \u6216\u662f ERROR \u5b57\u4e32\u6642\uff0c\u8868\u793aAT CMD \u5df2\u5b8c\u6210\uff0c\u4e0d\u9700\u8981\u7b49\u5f85 Time Out\u6642\u9593 if ((inData.indexOf(&#8220;OK&#8221;) &gt;=0) or (inData.indexOf(&#8220;ERROR&#8221;) &gt;=0)){<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/\u5224\u5b9a\u7121\u56de\u61c9OK, \u8996\u70ba\u88dd\u7f6e\u4e0d\u6b63\u5e38\uff0c\u96e2\u958b\u767c\u9001\u526f\u7a0b\u5f0f\u3002<br \/>\nif (inData.indexOf(&#8220;OK&#8221;) == -1){<br \/>\nSerial.println(&#8220;ESP8266 Return False&#8221;);<br \/>\nreturn false;<br \/>\n}<\/p>\n<p>\/\/\u4e00\u822c\u8fd4\u56de<br \/>\nSerial.println(&#8220;ESP8266 Return True&#8221;);<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>\/\/\u526f\u7a0b\u5f0f&#8212;&#8212;&#8212;&#8212;GPS_Read&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nString GPS_Read()<br \/>\n{<br \/>\nunsigned long start;<br \/>\n\/\/1.\u63a5\u6536GPS Data<br \/>\nString inData=&#8221;&#8221;;<br \/>\nString sReturn=&#8221;&#8221;;<\/p>\n<p>for (start = millis(); millis() &#8211; start &lt; 200;){ \/\/\u7b49\u5019200ms(time out)\u63a5\u6536RS232\u8cc7\u6599 while (GpsSerial.available()){ char c = GpsSerial.read(); inData += c; start = millis(); \/\/\u91cd\u7f6e\u7b49\u5f85\u6642\u9593 } } \/\/2. \u627e\u51faGPS\u7279\u5b9a\u8cc7\u6599\uff0cGPRMC, GLRMC, GARMC, BDRMC int nR; \/\/\u5b57\u4e32\u6536\u5c0b\u53f3\u908a\u5b9a\u4f4d\u9ede int nL; \/\/\u5b57\u4e32\u6536\u5c0b\u5de6\u908a\u5b9a\u4f4d\u9ede String sSubstring; \/\/\u904b\u7b97\u5b50\u5b57\u4e32 nL = inData.indexOf(&#8220;$&#8221;); nR = inData.indexOf(&#8220;*&#8221;); \/\/\u6b63\u5e38\u60c5\u5883, \u5de6\u908a(nL)\u5b9a\u4f4d\u9ede&gt;=0, \u53f3\u908a\u5b9a\u4f4d\u9ede(nR) &gt; nL<br \/>\nwhile(nL &gt;=0 &amp;&amp; nR &gt; nL){<br \/>\nsSubstring = inData.substring(nL, nR + 3); \/\/\u53d6\u51fa\u55ae\u4e00\u6bb5GPS Protocol (nR+3\u70ba\u4e86\u5305\u542b2bytes\u6aa2\u67e5\u78bc)<br \/>\ninData = inData.substring(nR +3); \/\/\u5c07\u4ee5\u53d6\u51fa\u7684inData \u7684\u5b57\u5143\u522a\u9664<\/p>\n<p>\/\/\u627e\u51faGPS\u7279\u5b9a\u8cc7\u6599\uff0cGPRMC, GLRMC, GARMC, BDRMC<br \/>\nif (sSubstring.indexOf(&#8220;RMC&#8221;) &gt;=0){<br \/>\n\/\/\u5c07GPS\u5b57\u4e32\u4e1f\u5165 fGpsParse, \u53d6\u51faGPS\u6b04\u4f4d\u8cc7\u6599<br \/>\nfGpsParse(sSubstring);<br \/>\n}<br \/>\nnL = inData.indexOf(&#8220;$&#8221;);<br \/>\nnR = inData.indexOf(&#8220;*&#8221;);<br \/>\n}<br \/>\n\/\/return sReturn;<br \/>\nreturn &#8220;$GPS,&#8221;+latitude+&#8221;,&#8221;+longitude+&#8221;,&#8221;+lndSpeed+&#8221;,&#8221;+gpsTime+&#8221;,&#8221;+GpsDate+&#8221;,&#8221;+GpsAV+&#8221;*&#8221;;<br \/>\n}<\/p>\n<p>\/\/\u53d6\u51faGPS\u6b04\u4f4d\u8cc7\u6599<br \/>\nbool fGpsParse(String sMsg){<br \/>\nint nL=0; \/\/\u5de6\u908a\u5b9a\u4f4d\u9ede<br \/>\nint nR=0; \/\/\u53f3\u908a\u5b9a\u4f4d\u9ede<br \/>\nint iCase=1; \/\/\u5c0d\u61c9\u53c3\u6578\u503c<br \/>\nString sSubstr; \/\/\u5b57\u4e32\u7247\u6bb5<\/p>\n<p>\/\/1.\u78ba\u8a8d\u662f\u5426\u70baRMC\u5354\u8b70<br \/>\nif(sMsg.indexOf(&#8220;RMC&#8221;)&lt;=0) return false; \/\/2.\u5b9a\u4f4d\u51fanL, nR\u7684\u4f4d\u7f6e nL = sMsg.indexOf(&#8220;,&#8221;); nR = sMsg.indexOf(&#8220;,&#8221;, nL +1); \/\/3.\u5229\u7528\u8ff4\u5708\uff0c\u5c07\u5404\u6bb5\u8cc7\u6599(\u5b57\u4e32)\u53d6\u51fa while(nL &gt;=0, nR &gt; nL){<br \/>\n\/\/\u53d6\u51fa\u5b9a\u4f4d\u9ede&#8221;,&#8221;\u9593\u7684\u8cc7\u6599<br \/>\nsSubstr = sMsg.substring(nL +1, nR);<\/p>\n<p>switch (iCase){<br \/>\ncase 1: \/\/UTC Time, hhmmss<br \/>\ngpsTime = sSubstr;<br \/>\nbreak;<br \/>\ncase 2: \/\/ A\/V<br \/>\nGpsAV = sSubstr;<br \/>\nbreak;<br \/>\ncase 3: \/\/Latitude, ddmm.mmmm<br \/>\nlatitude = sSubstr;<br \/>\nbreak;<br \/>\ncase 4: \/\/N\/S<br \/>\nbreak;<br \/>\ncase 5: \/\/Longitude, dddmm.mmmm<br \/>\nlongitude = sSubstr;<br \/>\nbreak;<br \/>\ncase 6: \/\/E\/W<br \/>\nbreak;<br \/>\ncase 7: \/\/Speed knote<br \/>\nbreak;<br \/>\ncase 8: \/\/\u5730\u9762\u822a\u5411 0~359.9\u5ea6\u89d2<br \/>\nbreak;<br \/>\ncase 9: \/\/UTC \u65e5\u671f, ddmmyy<br \/>\nGpsDate = sSubstr;<br \/>\nbreak;<br \/>\ncase 10: \/\/\u78c1\u504f\u89d2<br \/>\nbreak;<br \/>\ncase 11: \/\/\u78c1\u504f\u89d2\u65b9\u5411<br \/>\nbreak;<br \/>\ncase 12: \/\/\u5b9a\u4f4d\u6a21\u5f0f: A=\u81ea\u4e3b\u5b9a\u4f4d, D=\u5dee\u5206, E=\u4f30\u7b97, N=\u7121\u6548\u8cc7\u6599<br \/>\nbreak;<br \/>\ncase 13: \/\/\u6aa2\u67e5<br \/>\nbreak;<br \/>\n}<\/p>\n<p>nL = sMsg.indexOf(&#8220;,&#8221;, nR);<br \/>\nnR = sMsg.indexOf(&#8220;,&#8221;, nL + 1);<br \/>\niCase ++;<br \/>\n}<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\u7a0b\u5f0f\u7d50\u675f&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.rotor.com.tw\/wp-content\/uploads\/2017\/08\/TeKit001_Ver1.1.rar\" target=\"_blank\" rel=\"noopener noreferrer\">\u539f\u59cb\u6a94\u6848\u4e0b\u8f09<\/a><\/p>\n<p><a href=\"https:\/\/www.rotor.com.tw\/?p=1091\">TeKit001 \u7522\u54c1\u4ecb\u7d39<\/a><br \/>\n<a href=\"https:\/\/www.rotor.com.tw\/?p=1154\">TeKit001 \u7522\u54c1\u5be6\u969b\u904b\u4f5c\u72c0\u6cc1<\/a><br \/>\n<a href=\"https:\/\/www.rotor.com.tw\/?p=830\">\u7522\u54c1TeKit001-\u539f\u7406\u5716&#038;\u7a0b\u5f0f\u78bc<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TeKit\u7cfb\u5217\u5957\u4ef6\u7d42\u65bc\u4e0a\u5e02 \u6b64\u5957\u4ef6\u662f\u7531\u5148\u524d\u5c08\u6848\u884d\u751f\u51fa\u7684\u7522\u54c1 TeKit001\u904b\u4f5c &hellip; <a href=\"https:\/\/www.rotor.com.tw\/?p=830\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":56,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false},"categories":[24],"tags":[22,26,25,23],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/830"}],"collection":[{"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=830"}],"version-history":[{"count":7,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/830\/revisions"}],"predecessor-version":[{"id":2667,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/830\/revisions\/2667"}],"wp:attachment":[{"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rotor.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}