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