目前最新的uBase操作系統(tǒng)內(nèi)核版本號(hào)為3.07.002
下面對(duì)新大陸PT850/PT853/PT852數(shù)據(jù)采集器uBase操作系統(tǒng)內(nèi)核的升級(jí)過程做一下說明:
================================================================================
2012-07-17,uBase kernel for PT85x 3.07.002
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.35.28
================================================================================
1. 文件系統(tǒng)格式更新,運(yùn)行效率更好,容錯(cuò)性更高。同時(shí),支持 2KB-page NAND Flash。
************************************************************
此版本內(nèi)核將強(qiáng)制使用新版文件系統(tǒng),直接從3.06.XXX及之前升級(jí)將
導(dǎo)致原有文件全部丟失。因此,用戶應(yīng)該將原有文件拷貝出再執(zhí)行
升級(jí)。
************************************************************
2. 加入 DebugFlags 手段,方便控制內(nèi)核調(diào)試信息輸出。應(yīng)用層也可用 vaDbgComPort 往串口輸出調(diào)試信息。
3. 開機(jī)時(shí),往 PT85X 串口 115200bps 連續(xù)送 'g' 字符,將使能所有的內(nèi)核調(diào)試信息輸出(會(huì)拖慢運(yùn)行速度)。
4. 開機(jī)時(shí)檢測(cè)系統(tǒng)時(shí)鐘是否跑飛(可能由于時(shí)鐘電池耗盡導(dǎo)致),檢測(cè)到時(shí)提示用戶重設(shè)系統(tǒng)時(shí)間。
================================================================================
2011-12-01,uBase kernel for PT85x 3.06.004
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.31.28
================================================================================
1. Modem 撥號(hào)函數(shù)的變化:
* 新增 Modem 撥號(hào)輔助函數(shù) DialupStr_from_ConfigFile(內(nèi)核函數(shù)),該文件分析 NetConf2.ini 的指定小節(jié),返回該小節(jié)對(duì)應(yīng)的撥號(hào)字符串。返回的撥號(hào)字符串可直接用于 Dialup_with_Config。原先,NetConf2.ini 的小節(jié)內(nèi)容需要由應(yīng)用層代碼(如 850Shell)來分析,這樣的一個(gè)缺點(diǎn)是,當(dāng)今后對(duì) NetConf2.ini 中小節(jié)的含義做出擴(kuò)展時(shí),應(yīng)用程序必須跟著調(diào)整方能跟隨這些變化;由內(nèi)核來解釋 NetConf2.ini,就不需要修改應(yīng)用程序,只需升級(jí)內(nèi)核與更新 NetConf2.ini 即可使用新的撥號(hào)特性。
* 特別地,對(duì)于內(nèi)置無線 Modem 的機(jī)器,要使用系統(tǒng)默認(rèn)的設(shè)置進(jìn)行撥號(hào),寫法現(xiàn)可以簡潔到:
char bufDialupstr[256] = {0};
DialupStr_from_ConfigFile(NULL, NULL, bufDialupstr, sizeof(bufDialupstr));
err = Dialup_with_Config(bufDialupstr, NULL, NULL);
* DialupStr_from_ConfigFile 分析的配置文件名可以是自定義的,只是默認(rèn)為 NetConf2.ini 。
* Modem 撥號(hào),PPP 會(huì)話超時(shí)由默認(rèn) 12 秒(不可調(diào))增加為默認(rèn) 60 秒,原 12 秒超時(shí)值有時(shí)不足以讓 SIMCOM SIM900A 完成撥號(hào)。該超時(shí)值現(xiàn)可以通過撥號(hào)選項(xiàng) PppTimeoutSec 來調(diào)整(單位:秒)。
2. NetConf2.ini 文件格式擴(kuò)展:對(duì)于具有 UseInternalModem=YES 的小節(jié),有如下規(guī)定:
* 可以同時(shí)加入 AccessPointName= 與 NumToDial= 選項(xiàng),系統(tǒng)(指 DialupStr_from_ConfigFile 函數(shù))會(huì)根據(jù)實(shí)際的內(nèi)置 Modem 類型來擇其一使用,對(duì)于 GPRS modem 使用 AccessPointName,對(duì)于 CDMA modem 使用 NumToDial。
* 若要自行加入額外選項(xiàng),此額外選項(xiàng)名必須用星號(hào)打頭。比如,要加入 PppTimeoutSec=120,小節(jié)得寫成
[使用內(nèi)置無線Modem撥號(hào)]
UseInternalModem=YES
BaudRate=115200
AccessPointName=CMNET
NumToDial=#777
*PppTimeoutSec=120
3. 850Shell 網(wǎng)絡(luò)撥號(hào)部分采用 DialupStr_from_ConfigFile 獲取撥號(hào)字符串。
4. 修正 CloseFindFile 返回值,成功時(shí)返回 0,原先會(huì)返回隨機(jī)值。
5. 850Shell 時(shí)鐘設(shè)置部分,調(diào)整時(shí)區(qū)時(shí),實(shí)時(shí)更新用戶界面上年月日時(shí)分秒的數(shù)值。
================================================================================
2011-02-22,uBase kernel for PT85x 3.06.002
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.25.20
================================================================================
新增功能:
1. 提供 EM1300 v1.25.20 固件,PT853 用戶可自行更新此固件(手動(dòng)執(zhí)行 down-em1300d.bat)。
2. 支持新的 GPRS modem(SIMCOM SIM900)以及新的 CDMA modem(ZTE 8331)。
3. 提供新的撥號(hào)函數(shù)。新函數(shù) ConstructDefaultGPRSDialupString, ConstructDefaultCDMADialupString 可用于獲取缺省的 GPRS,CDMA 撥號(hào)字符串,它們內(nèi)部會(huì)自動(dòng)判斷內(nèi)置modem的類型。使用方法參考 850Shell 源碼。
4. 提供函數(shù) GetInternalModemTrait 來獲知內(nèi)置modem的類型。(提供信息之用)
5. 支持 page 為 2KB 的 NAND flash 機(jī)型。之前只支持 512B 的。
功能改進(jìn):
1. 對(duì)于紅外口(COM4),UartClose 內(nèi)部會(huì)等待串口輸出緩沖區(qū)放空后才真正關(guān)閉串口硬件。之前,用戶須自行等待,若等待時(shí)間不足將導(dǎo)致尾部數(shù)據(jù)沒有寫出。
2. WLAN 相關(guān):WiPort 驅(qū)動(dòng)內(nèi)部 InternalRebootToSec 和 WiPortBootupWaitSec 默認(rèn)值由 30 改為40 ,提高 WiPort 注冊(cè)Wifi網(wǎng)絡(luò)的適應(yīng)性。換言之, WlanStart 超時(shí)值傳 0,內(nèi)部即用 40 秒為超時(shí)值。
================================================================================
2010-10-15,uBase kernel for PT85x 3.05.010 with decoder 3.05.011
================================================================================
PT850(硬件 V6、V7、V8 都適用),PT853, PT852(硬件V7)。
建議所有使用 3.05.009 及之前內(nèi)核的設(shè)備都升級(jí)到 3.05.010 。
1. 重要修正:3.05.007 以來讀碼 API 報(bào)告的條碼類型數(shù)值(BARCODEINFO.code_type) 比先前版本少 1 。現(xiàn)恢復(fù)為和 3.05.007 之前條碼類型數(shù)值一致。 (r1985)
2. 條碼類型明確了 Code39 和 Full ASCII 39 類型的區(qū)分,之前的內(nèi)核版本,PT850和PT853對(duì)此二者解釋不一致。現(xiàn)在,區(qū)分規(guī)則是:若解碼后的 Code 39 內(nèi)容中含有Code39基本字符集以外的字符,則認(rèn)為條碼類型為 FULL ASCII Code 39,否則就不是。 (r2091,2092)
3. 重要修正:文件系統(tǒng)相關(guān)代碼標(biāo)記 NAND Flash 壞塊標(biāo)記有誤。(r2081)
4. 修正:應(yīng)用程序多余的 UnRegScannerCallBack 調(diào)用會(huì)導(dǎo)致應(yīng)用程序卡死。(r2083)
5. PT850 判斷是否有接激光頭的方法改為根據(jù)設(shè)備名稱字符串中是否包含“850N”,包含則為無激光頭的設(shè)備,同時(shí)修改老化測(cè)試,"850N"設(shè)備不測(cè)試識(shí)讀頭。(r1950)
6. 修正UC1610液晶驅(qū)動(dòng)中溫度校正函數(shù)指令錯(cuò)誤的bug。加對(duì)UC1610液晶屏幕灰階測(cè)試功能。(r2074)
7. 修正:PT853 啟動(dòng)后、直接進(jìn)字符shell、然后執(zhí)行文件系統(tǒng)上的程序,會(huì)死機(jī)。(r2046, r2085)
================================================================================
2009-10-23,uBase kernel for PT85x 3.05.009 with decoder 3.05.011
================================================================================
適用設(shè)備: PT850(硬件 V6、V7、V8 都適用),PT853, PT852(硬件V7)。
特別提示:對(duì)于硬件 V8.2 版的 PT853,必須使用此版本的內(nèi)核,即,不能使用 3.05.008 或更早的,否則 PT853 將工作異常。
在 V8.2 的PT853 上、使用 3.05.009 內(nèi)核,在插了串口線的情況下進(jìn)行讀碼,主控CPU能夠能夠正確獲取識(shí)讀頭傳來的條碼,V8.1 硬件則不能,——這是 V8.2 硬件設(shè)計(jì)上的變動(dòng)。
==新增功能==
===相比于 3.05.008:===
1. PT853 添加對(duì) EnableScanner DisableScanner 的支持。
2. 關(guān)于 PT853 識(shí)讀頭(COM5)與外接串口(COM1)共用硬件物理串口的處理方法:對(duì)于硬件版本號(hào)為 V8.2 或以上的機(jī)器,軟件打開COM1或COM4 會(huì)將硬件切換到外接串口,打開COM5會(huì)將硬件切換到識(shí)讀頭。若程序同時(shí)打開了 COM1 和 COM5,則 COM5 具有優(yōu)先級(jí)。
對(duì)于硬件 V8.1 或以下的機(jī)器,COM1 & COM5 互相影響的行為同 3.05.008 (請(qǐng)參閱 3.05.008 的發(fā)布說明)。
3. 內(nèi)核加入時(shí)區(qū)支持,850Shell "時(shí)鐘設(shè)置"頁面可設(shè)置與查看當(dāng)前時(shí)區(qū)。時(shí)區(qū)設(shè)置在格式化磁盤后不會(huì)丟失。
4. 增加如下時(shí)區(qū)相關(guān)函數(shù):
GetTimeZoneOffset 獲取本機(jī)時(shí)區(qū)設(shè)置
SetTimeZoneOffset 設(shè)置本機(jī)時(shí)區(qū)
U_time64 ANSI C time 函數(shù)的 64 位版本
U_gmtime64 ANSI C gmtime 函數(shù)的 64 位版本
U_localtime64 ANSI C localtime 函數(shù)的 64 位版本
U_mktime64 ANSI C mktime 函數(shù)的 64 位版本
注: 原 GetClock 函數(shù)返回的年月日時(shí)分秒,在此版本內(nèi)核上是指示的是本地時(shí)間。
5. 850Shell, WLAN 頁面,啟動(dòng) WLAN 設(shè)備前允許設(shè)置啟動(dòng)的超時(shí)值。某些場合下,WLAN 的啟動(dòng)時(shí)間會(huì)超過內(nèi)核默認(rèn)的 30 秒,此時(shí)可適當(dāng)延長此超時(shí)值來讓 WLAN 啟動(dòng)成功。
6. 新增內(nèi)核函數(shù) UGetHardwareVersion, UGetDeviceSerialString, UGetDecoderVersionString 替換 850Shell systeminfopage.cpp 原先那種難以移植的系統(tǒng)信息獲取方式。
注:以上提及的新函數(shù) SDK 需要 uTools 2.03.013 才支持
==Bug修正==
1. 針對(duì) PT853, 修改EM1300識(shí)讀頭參數(shù)獲取函數(shù),適應(yīng)新老版本EM1300固件。
2. 激光頭驅(qū)動(dòng)改進(jìn),當(dāng)沒有安裝激光頭的PT850設(shè)備運(yùn)行讀碼的程序時(shí)候,不會(huì)死機(jī)。
3. 850Shell,時(shí)鐘設(shè)置頁面,在 3.05.008 的內(nèi)核上保存時(shí)鐘設(shè)置時(shí)蜂鳴器會(huì)有異常聲響,此次的 850Shell 加了個(gè)延時(shí)來回避這個(gè)問題的出現(xiàn)。
================================================================================
2009-06-02,uBase kernel for PT85x 3.05.008 with decoder 3.05.011
================================================================================
==新增功能==
===相比于 3.05.005:===
1. 修改了scanner設(shè)備驅(qū)動(dòng),通過串口方式支持了 EM1300 識(shí)讀頭(對(duì)于PT853),通過設(shè)備名稱來區(qū)分識(shí)讀頭是激光頭還是 EM1300。
2. PT-853兼容了EM1300的設(shè)置碼與PT-850的設(shè)置碼。
3. 內(nèi)核字符界面的下載功能添加對(duì)EM1300下載的支持,EM1300內(nèi)核下載的塊號(hào)為:1000,EM1300配置文件下載的塊號(hào)為:999。
4. 增加了KbdRegisterEventEx函數(shù),可以獲取指定按鍵的按下與彈起事件。此接口需要uTools 2.03.013及以后的版本才支持。
5. 新增 GetClock_millisec 來提供毫秒級(jí)精度(PT850,853實(shí)際能精確到 10 毫秒),此函數(shù)接口在 uTools 2.03.013 中提供。
注:根據(jù)目前PT850,853的軟硬件實(shí)現(xiàn),GetClock_millisec 內(nèi)部會(huì)按需執(zhí)行"毫秒較時(shí)動(dòng)作",該操作可能會(huì)阻塞調(diào)用線程 0~1000 毫秒。"毫秒較時(shí)動(dòng)作"并非每次調(diào)用 GetClock_millisec 都發(fā)生,而是在系統(tǒng)察覺 tick 中斷丟失一定數(shù)量后才會(huì)發(fā)生。
===相比于 3.05.007:===
1. 開機(jī)過程亮 LED 綠燈,待字符 shell 啟動(dòng)后關(guān)閉綠燈。若沒有此綠燈指示,用戶在按 850 電源鍵 4~5 秒后才能得到開機(jī)成功的反饋(看到字符 shell 界面),用戶體驗(yàn)不佳。
==Bug修正==
1. 相比于內(nèi)核 3.05.007,將 GetClock 恢復(fù)為僅取秒級(jí)精度,另增加內(nèi)核函數(shù) GetClock_millisec 來提供毫秒級(jí)精度。原因:850掃描條碼期間,控制激光采集的代碼會(huì)關(guān) CPU 中斷、導(dǎo)致tick中斷丟失,而條碼識(shí)讀API又會(huì)對(duì)每個(gè)讀到的條碼調(diào)用 GetClock;根據(jù)目前 850 內(nèi)核的實(shí)現(xiàn),若讓 GetClock 取毫秒精度,則 GetClock 的調(diào)用線程檢測(cè)到 tick 中斷丟失超過一定數(shù)量后會(huì)啟動(dòng)較時(shí)動(dòng)作,此動(dòng)作會(huì)導(dǎo)致調(diào)用線程卡住 100~1000 毫秒、結(jié)果表現(xiàn)為連續(xù)條碼掃描不暢。因此,在不需要毫秒精度的場合,最好避免較時(shí)動(dòng)作的發(fā)生,將 GetClock 恢復(fù)為僅取秒級(jí)精度即可避免此較時(shí)動(dòng)作發(fā)生。
2. 相比于內(nèi)核 3.05.007,CCD 識(shí)讀頭(即EM1300)固件版本號(hào)查詢支持,即在850shell的系統(tǒng)信息里的"解碼程序版本"將顯示 EM1300 的固件版本號(hào),之前顯示的是激光掃描解碼庫的版本。
3. 相比于內(nèi)核 3.05.005, 修改了按觸發(fā)鍵發(fā)送啟動(dòng)識(shí)讀消息的機(jī)制,檢查scanner必須在open的情況下才發(fā)送啟動(dòng)識(shí)讀的消息。這樣避免了在進(jìn)入識(shí)讀界面之前按過觸發(fā)鍵,進(jìn)入識(shí)讀界面后,識(shí)讀頭會(huì)自動(dòng)啟動(dòng)識(shí)讀的bug。
==注意事項(xiàng)與備注==
PT853的識(shí)讀頭與外接串口目前共用主控 CPU 的物理串口。根據(jù)目前 PT853 主板(硬件版本 V7.3)的硬件設(shè)計(jì),會(huì)有如下問題:
* 當(dāng) PT853 的外接串口空置時(shí),CPU 的串口通道與識(shí)讀頭連通,此時(shí)識(shí)讀頭工作正常,讀到的條碼數(shù)據(jù)能傳給主控 CPU。
* 當(dāng) PT853 的外接串口連上與其他串口設(shè)備(如連接 PC 的串口)后,CPU 的串口通道將被強(qiáng)行切換到外接串口(PT853 的 COM1),這將導(dǎo)致識(shí)讀頭的數(shù)據(jù)無法傳給 CPU,即此情況下系統(tǒng)將無法獲得條碼數(shù)據(jù)(雖然識(shí)讀頭會(huì)發(fā)出讀碼動(dòng)作)。
一個(gè)典型的“故障”現(xiàn)象是:若 PT853 串口已連接外設(shè)時(shí)開機(jī),系統(tǒng)將取不到識(shí)讀頭版本號(hào),——因?yàn)槿∽R(shí)讀頭版本號(hào)需要和 EM1300 進(jìn)行。
================================================================================
2009-03-10,uBase kernel for PT-850 3.05.007 with decode 3.05.011
================================================================================
== 新增功能 ==
1. 修改了scanner設(shè)備驅(qū)動(dòng),通過串口方式支持了CCD識(shí)讀頭(PT-853設(shè)備),通過設(shè)備名稱來區(qū)分識(shí)讀頭是激光頭還是CCD的。
2. PT-853兼容了EM1300的設(shè)置碼與PT-850的設(shè)置碼。
3. GetClock() 函數(shù)獲取的時(shí)間能夠達(dá)到 10 毫秒的精度,即返回的 SYSTEMCLOCK.Milliseconds 數(shù)值能夠精確到 10 毫秒。之前,返回的 SYSTEMCLOCK.Milliseconds 總是為 0。
增加了KbdRegisterEventEx函數(shù),可以獲取指定按鍵的按下與彈起事件。此接口需要uTools 2.03.013及以后的版本才支持。
== Bug修正 ==
1、修正了在進(jìn)入識(shí)讀界面之前按過觸發(fā)鍵,進(jìn)入識(shí)讀界面后,識(shí)讀頭會(huì)自動(dòng)啟動(dòng)識(shí)讀的bug。
== 已知問題 ==
[2009-04-14] 該版本內(nèi)核裝在 PT-850(搭載激光識(shí)讀頭)上運(yùn)行會(huì)出現(xiàn)掃描一定數(shù)量的條碼(幾個(gè)或十幾個(gè))后,掃描操作出現(xiàn)短暫停滯(小于1秒)的現(xiàn)象,停滯期間按掃描鍵是無法立即啟動(dòng)下一次掃描的。該現(xiàn)象的出現(xiàn)不會(huì)讓系統(tǒng)運(yùn)行出錯(cuò),不過導(dǎo)致不好的用戶體驗(yàn)。
該現(xiàn)象是由此次 GetClock 函數(shù)的修改導(dǎo)致的,下一內(nèi)核版本將修正。
注意事項(xiàng)與備注
1、PT-853的識(shí)讀頭目前共用物理串口,故在PT-853設(shè)備連接串口線后,將不能進(jìn)行條碼識(shí)讀。
================================================================================
2008-11-14,uBase-III kernel for 850 v3.05.005 with decoder 3.05.011
================================================================================
1D 解碼器(Decode.bin.ue)版本更新為 3.05.011 。若只想對(duì) PT-800 更新此解碼庫,可以執(zhí)行壓縮包中的 down1dd.bat ,帶串口號(hào)作參數(shù)。
== 相比與3.05.002 的改進(jìn):==
1. 修改本機(jī) USB 設(shè)備的 VID=0x1eab , PID=0x0501 。 0x1eab 是 NLscan 向 usb.org 申請(qǐng)的合法 PID 。這使得 Windows 端的 USB 驅(qū)動(dòng)程序得更新才能配合之工作,新的驅(qū)動(dòng)程序?yàn)?USB Datapipe and vcomdrv Driver v1.6.1 。 (r1734)
2. 內(nèi)核增加 usock_connect_name() 函數(shù),可用域名來指示要連接的主機(jī)。該功能目前只能在 850RW(WiPort模塊) 上使用,因?yàn)?WiPort 模塊 06.50 自身加入了自動(dòng)域名解析功能。當(dāng)前最新的 WebCommTest 演示了此函數(shù)的使用。
3. 內(nèi)核添加激光掃描數(shù)據(jù)存儲(chǔ)模式設(shè)置。新掃描存儲(chǔ)模式會(huì)區(qū)分方向是從左到右,還是從右到左的數(shù)據(jù)。原先的方式照常使用,該設(shè)置提供給解碼庫使用。
==Bug 修正:==
1. 支持 WiPort 06.60 固件,報(bào)告正確的信號(hào)強(qiáng)度。若用 3.05.002 內(nèi)核+WiPort 06.60,報(bào)告的 RSSI 會(huì)少 10 dBm。
2. 內(nèi)核字符界面下載功能,若用串口,當(dāng)串口已被打開時(shí)立即宣告失敗。3.05.002 時(shí)沒沒有檢查串口是否已被他人打開。850Shell 也作了相應(yīng)修改,當(dāng)串口被占用時(shí) kernel_download 將失敗。
3. 修正 Code93碼 無法設(shè)置的bug。
4. 修正未發(fā)布版本 3.05.003中,無法對(duì)BOOKLANDEAN、ISBT128、MSI PLESSEY、DISCRETE20F5進(jìn)行設(shè)置的bug。BOOKLANDEAN默認(rèn)設(shè)置改為Disable。
==小的改動(dòng):==
1. g_isSeeVibraBug 默認(rèn)值由 1 改為 0 ,即默認(rèn)壓制自振現(xiàn)象。
================================================================================
2008-06-19,uBase-III kernel for 850 v3.05.002 with decoder 3.05.010
================================================================================
==相比與3.05.001的改進(jìn):==
1. 加入更多線程同步函數(shù),包括讀寫鎖、可嵌套調(diào)用的互斥量、Win32 事件、信號(hào)量、警告盒。這些函數(shù)都有專門的 API,用戶不再需要使用 UCreateEvent 了。
2. WiPort控制代碼改進(jìn),防止WiPort死機(jī),引入新WLAN API 。
3. 850內(nèi)核加入通過USB運(yùn)行download協(xié)議的功能。
4. Decode.bin.ue 更新為 3.05.010 (原為 3.05.004)。
5. udp_op.dll 更新為 1.4.0.3,修正 USB 連接bug。
==已知問題==
[2008-04-09] WlanStart 啟動(dòng)后,自動(dòng)休眠或自動(dòng)關(guān)機(jī)功能就失效了,原因是 WlanStart 啟動(dòng)后,COM3 上每隔幾秒總是有串口數(shù)據(jù)活動(dòng)。
[2008-04-21] 用老程序 BinDownloader 給 850 下載文件時(shí)會(huì)失敗,這在內(nèi)核 3.04.021 時(shí)還是可以成功的。
[2008-07-16] 當(dāng) COM1 已經(jīng)被其他人占用的情況下(比如通過 COM1 啟動(dòng)了 uCIP),且 kernel_download 之 DOWNLOAD_PARAM.chk_open=0 時(shí),kernel_download 運(yùn)行會(huì)出故障,因?yàn)槟菍?dǎo)致兩個(gè)線程都在讀串口。今天遇到的實(shí)際故障現(xiàn)象是 kernel_download 運(yùn)行中或運(yùn)行后 850 按鍵失去反應(yīng)。不幸的是已公布的 850Shell 源碼中就是把 DOWNLOAD_PARAM.chk_open 設(shè)為 0 。今決定:改 850Shell 中的 chk_open 賦值,0 改為 1,內(nèi)核不變。今后客戶遇到此問題就讓他去改自己的代碼吧。