pointers - XBee 开发板 LCD 显示屏上的字符显示
问题描述
我正在使用可编程 XBee 开发板与 LCD HD44780 (20x4) 接口。我在 XBee 上接收到一个无线帧并将其显示在 LCD 上。
当 的长度为 80 个字符时它工作正常,因为我不能显示更多。为此,我想逐个字符地显示帧,以便在显示最后一个字符时光标再次移动到 0,0 然后覆盖。这样我可以尽可能多地显示,具体取决于 XBee RAM。
以下代码适用于小于或等于 80 个字符的帧。关于如何为框架逐个字符做事的任何提示?
#include <xbee_config.h>
#include <types.h>
#include <string.h>
#include <ctype.h>
#define char_lcd_write_str(a) char_lcd_write(a, strlen(a))
static uint8_t test_stage = 0;
static uint8_t test_stage_done = 0;
#if defined(RTC_ENABLE_PERIODIC_TASK)
void rtc_periodic_task(void)
{
test_stage++;
if (test_stage == 8)
test_stage = 0;
test_stage_done = 0;
}
#endif
#ifdef ENABLE_XBEE_HANDLE_RX
int xbee_transparent_rx(const wpan_envelope_t FAR *envelope, void FAR *context)
{
int c,k;
char addrbuf[ADDR64_STRING_LENGTH];
char_lcd_init(CHAR_LCD_CFG);
char_lcd_clear();
addr64_format(addrbuf, &envelope->ieee_address);
sys_watchdog_reset();
char_lcd_write_str(envelope->payload);
delay_ticks(HZ / 10);
return 0;
}
#endif
void main(void)
{
uint8_t i, j;
int data,l;
sys_hw_init();
sys_xbee_init();
sys_app_banner();
char_lcd_init(CHAR_LCD_CFG);
for (;;) {
if (!test_stage_done) {
switch (test_stage) {
case 0:
char_lcd_goto_xy(0, 0);
char_lcd_write_str("All working fine");
break;
}
test_stage_done = 1;
}
sys_watchdog_reset();
sys_xbee_tick();
}
}
解决方案
该wpan_envelope_t
结构包括您可以使用的有效负载长度。
uint16_t length = envelope->length;
uint16_t offset = 0;
while (offset < length) {
uint16_t write = length - offset;
if (write > 80) write = 80;
char_lcd_goto_xy(0, 0);
char_lcd_write(&envelope->payload[offset], write);
offset += write;
}
请注意,这看起来有点奇怪,因为字符串的结尾会与之前打印的 80 个字符重叠。您可能希望在最终调用后写出足够的空格char_lcd_write()
以清除该数据(或添加特殊字符以指示消息结束)。
推荐阅读
- python-3.x - Python:将文件树复制到文本文件
- mysql-workbench - 无法使用本地套接字/管道 MAMP 连接到 MySQL
- ios - 允许用户在 React Native 中更改 App 图标
- mysql - MySQL:在有限范围内删除单个选定行
- vagrant - 无法在 PATH 模式 040777 中解析不安全的世界可写目录 /mnt/c
- amazon-web-services - ec2 上没有更多磁盘空间
- mongodb - 在 MongoDB 中的记录中取消嵌套值
- bash - 使用 awk 或 bash 将字符串附加到列中单元格的所有元素
- ios - FIRUser.uid 更改为某些内容,并且在 swift 5 中不起作用
- python - Python速成课程:json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)