“线程”中讨论的其它部件:CC3120MOD, CC3120, UNIFLASH, TEST
您好,
我正在使用 MSP432和 CC3120MOD 开展一个项目。
我一直在考虑使用 CC3120上的非易失性存储器来创建一个测试程序,该测试程序将在 MSP432每次从 LPM 唤醒后返回休眠状态时计算在内。
我可以创建并写入文件,这一点很好。 当我通过 uniflash 下载创建的文件时,我可以使用记事本看到 CC3120文件中的文本。
但是,当我从 CC3120读取文件时,文本似乎与文件中的实际内容失真。 例如,如果我使用 Notepad + Uniflash 或 MSP432将“测试 CC3120”写入文件,MSP432输入缓冲区将显示“eesiigg C31120”。 我通过 uniflash 从 CC3120重新下载来确保再次检查该文件,并且该文件正在读取的文件中的文本看起来仍然完全符合要求。
在我的柜台,当我从 MSP432读取 CC3120文件的“00001”时,输入缓冲区显示为“00011”,这完全破坏了我的程序。 我通过再次下载此文件来仔细检查计数器系统是否正常工作,所包含的文本是“00001”。
我认为这是我使用 SL_FsRead()或 SL_FsOpen()的方式上的问题,但我不确定。 我将在下面包括我正在使用的读/写代码。
谢谢,
格雷格
char* DeviceFileName = "lpm_count_hex"; unsigned long MaxSize = 63 * 1024; // Bytes long DeviceFileHandle = -1; char InputBuffer[50]; char OutputBuffer[50]; long count; DeviceFileHandle = sl_FsOpen((unsigned char *)DeviceFileName, SL_FS_READ, NULL); sleep(1); ret = sl_FsRead( DeviceFileHandle, 0, (unsigned char *)InputBuffer, 50); UART_PRINT("%s", InputBuffer); count = strtol(InputBuffer, NULL, 10); count++; sprintf(OutputBuffer, "%05lu", count); sleep(1); ret = sl_FsClose(DeviceFileHandle, 0, 0, 0); sleep(1); DeviceFileHandle = sl_FsOpen((unsigned char *)DeviceFileName, SL_FS_WRITE, NULL); sleep(1); ret = sl_FsWrite(DeviceFileHandle, 0, OutputBuffer, 5); sleep(1); ret = sl_FsClose(DeviceFileHandle, 0, 0, 0);