FAQ杂记: Difference between revisions

From wizarPOS
No edit summary
No edit summary
 
(31 intermediate revisions by the same user not shown)
Line 4: Line 4:
</div>
</div>
|
|
* PSAM卡baudrate问题:在Q3上波特率是9600到9600*8, 波特率默认是9600,这个速度是卡和模块之间协商的,是一个自动的过程,(if the card can support higher baudrate, when get ATR of the card, the module will send an increase baudrate command to the card, if card support the increase, then the communication will use a high baudrate).Q2P上暂时支持不到38400,模块厂商在查。
具体卡有没有使用高波特率,普通日志看不出,需要取QXDM日志。
* 在Q2A7及以前版本,如果某SIM卡,终端上已经允许了打电话,发短信,Prefered network type也勾选了带2G的选项,但是还是不能打电话,发短信,说明SIM卡可能只支持4G,语音只支持VoLTE。Q2P上有VoLTE选项,所以支持这样的卡没问题。
* 在Q2A7及以前版本,如果某SIM卡,终端上已经允许了打电话,发短信,Prefered network type也勾选了带2G的选项,但是还是不能打电话,发短信,说明SIM卡可能只支持4G,语音只支持VoLTE。Q2P上有VoLTE选项,所以支持这样的卡没问题。
* 在TMS上通过配置参数文件来配置重启时间及间隔天数。[https://ftp.wizarpos.com/advanceSDK/Configure_restart_daysandtimefromTMS.pdf 参考文档]
* 在TMS上通过配置参数文件来配置重启时间及间隔天数。[https://ftp.wizarpos.com/advanceSDK/Configure_restart_daysandtimefromTMS.pdf 参考文档]
* VistionTMS account: WP-TESTING/We1234567890
* [https://ftp.wizarpos.com/advanceSDK/disable_sms.apk Disable SMS/短消息, 可以给需要的客户发] [https://ftp.wizarpos.com/advanceSDK/enable_sms.apk Enable SMS/短消息, 可以给需要的客户发]
* [https://ftp.wizarpos.com/techsupport/software/PINPAD无响应处理流程.pdf PINPAD无响应处理流程]
* [https://ftp.wizarpos.com/techsupport/software/Usbtethering.pdf Usbtethering菜单测试结果]
* [https://ftp.wizarpos.com/advanceSDK/wizarpos.zip animation demo files]
* start sub-menu of settings menu
** 设置快捷菜单: startActivity(new Intent().setClassName("com.wizarpos.android.home", "com.wizarpos.android.home.activity.Settings"));
** Wifi: startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
** Self-check: startActivity(new Intent().setClassName("com.wizarpos.merchantselftest", "com.wizarpos.merchantselftest.MainActivity"));
** About-POS: startActivity(new Intent(android.provider.Settings.ACTION_DEVICE_INFO_SETTINGS));
** Power-off device: startActivity(new Intent().setClassName("com.android.timerswitch", "com.android.timerswitch.TimerSwitchSettings"));
** AppMarket: startActivity(new Intent().setClassName("com.wizarpos.appmarket", "com.wizarpos.appmarket.MainActivity"));
* [https://ftp.wizarpos.com/advanceSDK/DisableAppStatus.Play.Protect-release-v2.0.1-r20240912110440-q1_platform.apk Disable play protect APK]
* Google play store: 测试用【账号】gylr208@gmail.com【密码】Fa40002744
* 目前所有model上,MAX版本Google拼音输入法已移除,有需要的客户另外安装,[https://ftp.wizarpos.com/advanceSDK/GooglePinyinIME.apk Q2上APK,已签名]
* Q2P 以上的版本WIFI支持5G。 LTE目前没有支持5G的。
* ACM串口,侧边的otg USB支持,需安装打开ACM属性的oem,终端上需要选择slave模式打开。另外一端也是CDC模式或者Host模式。
* [https://ftp.wizarpos.com/techsupport/software/检验是否带MDB.png 检验终端是否带MDB方法]
* [https://ftp.wizarpos.com/advanceSDK/VA21BatteryInfo.zip VA21BatteryInfo.zip]
* 蓝牙底座测试总结:蓝牙底座可以和很多终端配对,但同一时间只能和一台终端连接成功。
** 一台终端通过终端自检扫码,会自动配对,并且连接
** 一台终端通过终端自检扫码成功连接一个蓝牙底座,断开后(Disconnect)或者删除(Forget),另一台终端扫码连接这个蓝牙底座可以成功
** 一台终端已成功连接一个蓝牙底座,未断开情况下再使用另一台终端扫码连接这个蓝牙底座,是无法成功的
*** 如果另外一台终端曾经配对过,扫码,终端自检Camera界面显示配对成功,但不会连接成功
*** 如果另外一台终端没有配对过,扫码,终端自检Camera界面不会配对成功
** 如果客户的蓝牙模块出现异常,无法连接上任何一台终端,可以通过以下步骤进行调试:①使用串口调试工具进行深度恢复,输入命令:TTM:RST-RESET;②使用testBluetoothTestTool进行初始化蓝牙模块;③用商户自检进行扫码配对,[https://ftp.wizarpos.com/advanceSDK/bluetoothdockinginit.pdf 详见文档]。
* 关于串口
** POS机上,侧边的otg USB,使用数据线连接,Open的时候是slave模式,连上otg转接头,再连UU线,Open的时候是Host模式。
** Android板上项目,里面包含了各种驱动,使用这样的代码的应用,可以不用关心Android板上是否安装了usb驱动,https://github.com/mik3y/usb-serial-for-android.git
** POS机上侧边的otg USB, 连Android板,需要Android板上编译高通的usb驱动,高通usb驱动,我们这边最高Android12上的,客户需要,我们可以提供。拷贝驱动到这个目录, kernel/drivers/usb/serial, 然后编译。
** UU线连接Android板,需要Android板上打开UU线驱动{CONFIG_USB_SERIAL_PL2303,CONFIG_USB_SERIAL_FTDI_SIO},要判断Andrioid板上是否打开UU线驱动,步骤{先插拔UU线,再运行这个命令adb shell dmesg},取dmesg日志。查看到日志里面有这一行:pl2303 converter now attached to...意味着打开了UU线,可以进行通讯。Android板上编译UU线驱动,是这两个:1.LA.UM.9.15.2/LINUX/android/kernel/msm-4.19/drivers/usb/serial/ftdi_sio.c 2.Linux drivers/usb/serial/pl2303.c
* 关于Dukpt实现一次一密的会话定义:DUKPT是指每一次Transaction使用一个唯一的密钥。每个Transaction的密钥都不相同。慧银PINPad对于一次会话的定义:
** 每个PINPad的open和close之间:只要使用过了任何一个密钥,下一次open后就认为开始一个新的会话,KSN就需要加1;如果没有使用过任何密钥,这次会话不算,即一下open不会开始一个新的会话。from redmine:26868
** 每个新会话开始,所有会话密钥的KSN都使用新的值。
** 在每次open和close之间,如果PIN key第二次使用,强制认为开始一个新回话。
** 在每次open和close之间,如果MAC key或者MAC key response第二次使用,强制认为开始一个新回话。20230705补充说明:就是说mac key和response mac key可以在不增加ksn的情况下各自使用一次。如果计算一次mac再计算一次response mac,则他们用同一个ksn。同时增加一个方法calculateResponseMac返回计算的mac数组,让调用者自己比较是否正确。
** Data key也符合上述规则
[上述规则的英文描述,可以直接拷贝给客户。Regarding the DUKPT Implementation and the Definition of a Session (One-Key-Per-Transaction):
DUKPT (Derived Unique Key Per Transaction) means that each transaction uses a unique key — no two transactions share the same key.
The definition of a session is as follows:
Between each open and close operation on a PINPad:
If any key is used during this period, then the next open is considered the start of a new session, and the KSN (Key Serial Number) must be incremented.
If no keys are used during the open/close period, then this does not count as a session, and the KSN remains unchanged.
At the start of a new session, all session keys use a new KSN value.
If the PIN key is used a second time between one open and close, it is forced to start a new session.
If the MAC key or MAC response key is used a second time between one open and close, it is also forced to start a new session.
This means that the MAC key and response MAC key can each be used once per session without increasing the KSN.
If a MAC is calculated once and a response MAC is calculated once, both use the same KSN. A new method calculateResponseMac is added to return the MAC array so the caller can compare it themselves.
The Data key follows the same rules above.]
*低电量警告:当电量低于15%或者剩余使用时间少于3小时都会报
*screenshot(截屏)相关,不支持快捷键截屏,支持开发应用截屏,但是密码键盘做了保护截不了。deviceowner应用可以控制终端点击。Demo下载。 AnyDesk显示,不能操作。
*SDK printBarcode()方法使用CODE128无法打印字母数字混合内容  的验证结果
经调试验证,该问题是由于要打印的内容过长导致。
打印机可以通过sendESCCommand()方法设置条形码宽度。传参为
new byte[]{0x1D, 0x77, (byte)0x02)},
new byte[]{0x1D, 0x77, (byte)0x03)},
new byte[]{0x1D, 0x77, (byte)0x04)},
new byte[]{0x1D, 0x77, (byte)0x05)},
new byte[]{0x1D, 0x77, (byte)0x06)}
默认是0x03
设置条形码最小宽度是0x02,对于客户所要打印的“ASIACELL 5,000 IQD” 在设置打印机条形码最小宽度时,也只能打印到“ASIACELL 5,00”,与客户期望相差“0 IQD”。
对printBarcode()方法使用CODE128在设置不同二维码宽度的验证:
0x02档    最多可打印 28个数字 或  14个英文  或  14个英文符号  或 14个空格 
0x03档    最多可打印 16个数字 或  8个英文    或  8个英文符号    或  8个空格 
 
0x04档    最多可打印 10个数字 或  5个英文    或  5个英文符号    或  5个空格 
       
0x05档    最多可打印 6个数字  或  3个英文    或  3个英文符号    或  3个空格 
0x06档  最多可打印 4个数字    或  2个英文    或  2个英文符号    或  2个空格 
数字与字母结合的情况,由于sdk里ByteUtil.generateDataForCode128方法对数字和字母的长度计算使用的不同的计算方式,codeC和codeB,
所以具体数字+字母混合内容的打印,在不等数字和不等字母组合上有差异,需要手动输入调试与确认。
}}
}}

Latest revision as of 05:30, 23 May 2025

This content is restricted to authorized users only. Please log in to access additional information.