近期笔者在研究如何从软件方面提升资产监测设备的性能,从而提升用户的使用体验感。
资产监测设备的主要作用是帮助用户监测设备的实时位置、实时状态避免运动中的货物出现丢失等情况。环境监测设备在智慧物流方面发挥了重要的作用,例如在运输贵重货物过程中,只需要将该设备安装在货物中,用户即可远程了解货物的位置、货物是否出现暴力扔件、以及避免货物在运输过程中的丢失。
资产监测设备中的华大单片机,对该设备的工作发挥了重要的作用。笔者的软件团队对单片机进行了软件升级。
具体流程如下:
/**
** \brief 上位机数据帧解析及处理
**
** \param [in] None
**
** \retval Ok APP程序升级完成,并接受到跳转至APP命令
** \retval OperationInProgress 数据处理中
** \retval Error 通讯错误
**
******************************************************************************/
en_result_t Modem_Process(void)
{
uint8_t u8Cmd, u8FlashAddrValid, u8Cnt, u8Ret;
uint16_t u16DataLength, u16PageNum, u16Ret;
uint32_t u32FlashAddr, u32FlashLength, u32Temp;
if (enFrameRecvStatus == FRAME_RECV_PROC_STATUS) //有数据帧待处理, enFrameRecvStatus值在串口中断中调整
{
u8Cmd = u8FrameData[PACKET_CMD_INDEX]; //获取帧指令码
if (PACKET_CMD_TYPE_DATA == u8FrameData[PACKET_TYPE_INDEX]) //如果是数据指令
{
u8FlashAddrValid = 0u;
u32FlashAddr = u8FrameData[PACKET_ADDRESS_INDEX] + //读取地址值
(u8FrameData[PACKET_ADDRESS_INDEX + 1] << 8) +
(u8FrameData[PACKET_ADDRESS_INDEX + 2] << 16) +
(u8FrameData[PACKET_ADDRESS_INDEX + 3] << 24);
if ((u32FlashAddr >= (FLASH_BASE + BOOT_SIZE)) && (u32FlashAddr < (FLASH_BASE + FLASH_SIZE))) //如果地址值在有效范围内
{
u8FlashAddrValid = 1u;