【平头哥RVB2601创意应用开发】u8g2+IP
[复制链接]
【前言】拜读了好几个大佬的作品,这里要特别特别感谢@DDZZ669还有@sonicfirr等几位的作品。
我所参与的项目第一要素就是完联网跟显示,现在已经把联网与显示的功能基本搭建起来,为后来的工程开路。
【步聚一】下载helloworl基本项目,然后按照【平头哥RVB2601创意应用开发】实践2-移植U8g2图形库 - 平头哥RISC-V RVB2601活动专区 - 电子工程世界-论坛 (eeworld.com.cn)这篇文章进行u8g2的移植,这位大佬把工程代码已分享至gitee仓库: ,大家可以下载下来就可以使用了。
【步聚二】按照我前面的贴子把wifi800连网大家可以看看其他贴子,也可以参观我的这篇来进行:【平头哥RVB2601开发板试用体验】TCP_SEVER 通信 - 平头哥RISC-V RVB2601活动专区 - 电子工程世界-论坛 (eeworld.com.cn)
【步聚三】上面两步完成后在主程序下初始化u8g2:
int main(void)
{
char ip[16];
char gw[16];
char mask[16];
int ipinfo = -1;
board_yoc_init();
LOGD(TAG, "%s\n", aos_get_app_version());
u8g2_t u8g2;
u8g2Init(&u8g2);
u8g2_SetFontMode(&u8g2, 1);
u8g2_SetFont(&u8g2, u8g2_font_unifont_t_symbols);
u8g2_FirstPage(&u8g2);
u8g2_ClearBuffer(&u8g2);
u8g2_DrawStr(&u8g2,0,12,"RVB2601");//字符显示
u8g2_SendBuffer(&u8g2);
while (1) {
// LOGD(TAG, "Hello world! YoC");
aos_msleep(2000);
ipinfo = w800_link_info(ip,gw,mask);
if(ipinfo == 0){
// IP: 192.168.3.233
LOGD(TAG,"IP:%s",ip);
u8g2_DrawStr(&u8g2,0,32,ip);//显示IP地址
u8g2_SendBuffer(&u8g2);
}
}
return 0;
}
效果如图:
【经验分享】在移植u8g2的过程序中,我原来是把U8g2的文件直接复制到app目录下,然后就会报找不到头文件的提示,整了好几天。今天又仔细的看了常见问题贴:
Q47:剑池CDK编译错误:undefined reference to xxx?
A47:如果在编译时提示“undefined reference to xxx”,请按照如下步骤分析:
1、该函数是否有定义?
- 如果没有定义和实现,需要您首先定义好该函数并添加到工程中;
* 某些库函数(例如fputc)的实现依赖于硬件,所以编译器没有实现,也需要您自己实现
2、该函数是否能在工程中看到/搜索到?
- 如果只是把文件copy到工程目录,即使reload all project,这个文件对工程来说仍然可能是不可见的。您需要通过工程视图右键【Add an Exsiting File】或者【Add Source Folder】,确保函数定义在工程中可以看到;
3、查看相关函数是否被宏定义包裹,如果是,需要对相应的宏进行定义。
4、如果该函数定义在某个外部库中:
- 请确认外部库是否被包含在链接参数中?通过右键工程->选择【Options for xxx】进入工程配置页面->点击【Linker】标签->找到【Library Configuration】,检查是否包含了这个库;
- 请确认是否在代码中,包含了这个函数声明所在的头文件?
5、另外也可能时链接时,没有把函数的符号链接进来。
* 右键工程->选择【Options for xxx】,打开工程配置页面-> 选择【Linker】标签-> 在【Link Type】选择“whole-archive”或者“start-group”
最后解决的办法是,在工程里面右键,建立文件夹,然后再用【通过工程视图右键【Add an Exsiting File】】把文件添回进去,才不报错。
【下一步】我的服务器已经写好接口,但是是POST的数据提交,已经向平头哥提交了工单,问题还在处理中。
希望大家的作品早一日完成。
|