0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术低成本WiFi在Linux工控主板上的编程方法

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

ETA6103是由串口WiFi模块E103(esp8266ex芯片)+ USB转串口芯片CH340T构成的低成本无线模块,其对外接口是miniPCIe接口,可以适用于英创ESMARC V4.0以上的所有底板,也可以通过ETA303模块转成USB接口,用到所有的英创底板之上。

ESMARC底板、ETA6103和ETA303模块

工作的时候,ETA6103被虚拟成串口设备,比如/dev/ttyUSB0。对软件来说,按串口的方式读写,发送AT指令即可建立互联网连接。值得注意的是ETA6103最大能支持5个网络连接,包括所有的TCP和UDP连接。并且,所有的配置信息、网络数据都通过同一个串口传输。为方便用户编程,适应网络编程的习惯,增加程序的可读性,英创公司封装了一个CUartWifi类,提供了配置无线网络和建立TCP/UDP传输的公共函数,用户不用关心具体的AT指令。

1、加载CH340T驱动

insmod /lib/modules/(Linux versions)/usbserial.ko

insmod /lib/modules/(Linux versions)/ch340.ko

成功后会在/dev目录下增加一个串口设备ttyUSBx,通过此串口发送AT指令,接收信息。

2、连接WiFi

CUartWifiuartWifi(devname);

ret = uartWifi.ConnectToAP("Emtronix\\.20","0987654321");//需要对特殊字符进行转义

ret = uartWifi.SetIPInfo("192.168.201.93","192.168.201.20", "255.255.255.0");

需要注意的是ETA6103的AT指令中ssid需要对特殊字符做转义,假如无线网络账号是"Emtronix.20",ETA6103的AT指令中ssid应该输入"Emtronix\.20",而通过CUARTWifi类发送的ssid参数就应该是"Emtronix\\.20"。连接上无线网络后,可以调用SetIPInfo设置IP地址、网关、子网掩码,还可以使用Ping工具检查连接状况。

3、建立TCP服务端

charserver[] = "*";

ret = uartWifi.Open(server,6002,TCP_TRANS_TYPE,0);

inttotalConno = 0;

pthread_mutex_t totalConno_mutex;

pthread_mutex_init(&totalConno_mutex,NULL);

while(1)

{

ret = uartWifi.Accept(0);

......

threadFuncParam.pUartWifi = &uartWifi;

threadFuncParam.conno = ret;

threadFuncParam.pTotalConno = &totalConno;

threadFuncParam.pTotalConnoMutex = &totalConno_mutex;

ConnThreadCreate(&connThread[ret],(void* (*)(void*))&ConnThreadFunc1,&threadFuncParam) ;

}

ETA6103支持的最大网络连接数是5个,包括所有的客户端连接和服务端连接。在建立服务端连接时,首先使用Open函数开启服务端功能,然后马上进入Accept状态,每收到一个连接,就为这个新连接开启一个线程。建立新线程时传递参数要用到下面的结构体:

structThreadFuncParam

{

CUartWifi * pUartWifi;

intconno;

int*pTotalConno;

pthread_mutex_t *pTotalConnoMutex;

};

在此线程中调用WaitEvent等待此连接的数据或连接中断的事件,并做对应的处理。这里对接收到的数据进行回发,使用do{}while循环是保证对应conn的接收数据缓存中的数据能全部读出。在退出此线程时,使用指针对主程序中的TotalConno做了“减一”处理,表示conn连接关闭。

intConnThreadFunc1(void* lparam )

{

CUartWifi * pUartWifi = ((structThreadFuncParam * )lparam)->pUartWifi;

intconn = ((structThreadFuncParam * )lparam)->conno;

int* pTotalConno = ((structThreadFuncParam * )lparam)->pTotalConno;

intconnClose = 0;

...具体声明见例程

while(connClose != 1)

{

event = pUartWifi->WaitEvent(conn,2000);

switch(event)

{

caseCONN_EVENT_TIMEOUT:

break;

caseCONN_EVENT_DATAIN:

do{

readNum = pUartWifi->Recv(conn,buf,1024);

...

pUartWifi->Send(conn,buf,readNum);

}while(readNum == 1024);//不一定是1024,

break;

caseCONN_EVENT_CLOSE:

connClose = 1;

break;

caseCONN_EVENT_ERROR:

connClose = 1;

break;

default:

break;

}

}

pthread_mutex_lock(((structThreadFuncParam * )lparam)->pTotalConnoMutex);

if(*pTotalConno > 0)

*pTotalConno = *pTotalConno - 1;

pthread_mutex_unlock(((structThreadFuncParam * )lparam)->pTotalConnoMutex);

return0;

}

4、建立TCP客户端连接

客户端也使用Open建立,第一个参数为IP地址,得到新连接后使用WaitEvent监听处理此连接的事件,与服务端程序相似。

ret = uartWifi.Open(remoteIP,remotePort,TCP_TRANS_TYPE,0);

if(ret >= 0 && ret < 5)

{

intconnClose = 0;

...具体声明见例程

while(connClose != 1)

{

event = uartWifi.WaitEvent(conn,2000);

switch(event)

{

caseCONN_EVENT_TIMEOUT:

break;

caseCONN_EVENT_DATAIN:

do{

readNum = uartWifi.Recv(conn,buf,1024);

}while(readNum == 1024);//不一定是1024,

break;

caseCONN_EVENT_CLOSE:

connClose = 1;

break;

caseCONN_EVENT_ERROR:

connClose = 1;

break;

default:

break;

}

}

}

5、关闭连接,断开网络

for(i1=0;i1

{

uartWifi.Close(i1);

}

uartWifi.DisconnectToAP();

至此,完成了整个通信过程,如果用户对此感兴趣,可以联系我们。我们将提供驱动和具体的参考例程等资料。

另外,对于对硬件电路有特殊要求的用户,可以直接使用物理串口连接独立的E103模块,此封装类及以上编程方法同样适用,只需要将/dev/ttyUSBx修改成/dev/ttySx即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    218013
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36952
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙芯中科助力2025教育信息技术应用创新大赛成功举办

    2025年11月13日-15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-21 16:23 600次阅读

    3A6000四核龙芯工控主板,推动信工控深度融合

    当今信科技快速发展,技术的不断演进和市场需求的变化,工控领域也进行源源不断地创新,其中最引人注目的是国产龙芯
    的头像 发表于 11-14 09:10 212次阅读

    工控主板的设计特性

    工业自动化、智能装备、物联网等领域,工控主板作为核心控制单元,其设计质量直接决定了整个系统的稳定性、可靠性与运行效率。与消费级主板不同,工控
    的头像 发表于 11-13 08:58 294次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的设计特性

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控主板的自主可控程度直接决定信创新基
    的头像 发表于 11-05 13:54 139次阅读

    工控主板的三大核心技术

    工业自动化的浪潮中,工控主板如同“工业大脑”的核心载体,支撑着各类设备的稳定运行与智能升级。相较于消费级主板工控
    的头像 发表于 10-16 11:05 233次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控
    的头像 发表于 08-11 09:14 566次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技
    的头像 发表于 07-22 18:20 560次阅读

    Linux系统挂载新固态硬盘的方法,触觉智能工控主板演示

    本文介绍Linux系统下新固态硬盘的挂载,使用触觉智能RK3568工控主板演示(型号IDO-SBC3528)检测固态硬盘与主板是否连接成功命令如下:fdisk-l#列出所有磁盘和分区
    的头像 发表于 06-19 16:13 623次阅读
    <b class='flag-5'>Linux</b>系统挂载新固态硬盘的<b class='flag-5'>方法</b>,触觉智能<b class='flag-5'>工控</b><b class='flag-5'>主板</b>演示

    开源系统适配:聚徽分享国产工控平板 Linux / 鸿蒙系统下的技术优化

    工业自动化与智能化加速推进的当下,国产工控平板的系统适配成为提升设备性能与竞争力的关键环节。Linux 和鸿蒙作为开源系统,凭借其高度的开放性与可定制性,为国产工控平板带来新的发展机
    的头像 发表于 06-13 16:29 717次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6381次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产
    的头像 发表于 05-09 09:24 575次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    信息安全管理必备!Linux系统使用SSH登录root账号的方法

    Linux远程管理信息安全必备!本文介绍各类Linux开发板/主板使用SSH登录root账号的方法,使用触觉智能RK3562开发板演示,关注
    的头像 发表于 02-12 15:46 1119次阅读
    <b class='flag-5'>信息</b>安全管理必备!<b class='flag-5'>Linux</b>系统使用SSH登录root账号的<b class='flag-5'>方法</b>

    工业级主板工控主板的区别?

    工业领域,主板的重要性是被无限放大的。大型工厂里日夜不停运转的自动化生产线、精准控制的智能电网系统、以及极端环境下依然稳定采集数据的石油勘探设备,它们背后都依靠着工业级
    的头像 发表于 01-02 10:01 845次阅读

    飞腾助力首届教育信息技术应用创新大赛圆满落幕

    近日,由中国教育技术协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 768次阅读