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

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

3天内不再提示

英创信息技术Linux主板4G通讯断线重连的自动管理

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

扫码添加小助手

加入工程师交流群

在工控主板使用的现场环境中,可能会有一部分不能够提供以太网的情形,所以3G和4G网络以其便捷的使用方式,得到越来越广泛的应用。但是在使用无线通讯的时候,为了保证通讯的稳定性,断线重连机制是必须在程序中实现的。

为了让客户能够更加便捷的进行开发,英创公司在Linux主板上实现了自动拨号和断线重连的管理功能,并以库文件的形式放在主板文件系统中提供给客户。通过拨号管理库提供的API函数,客户就能够方便的实现自动拨号以及断线重连的功能,下面就详细介绍针对英创Linux主板的拨号管理库及导出的API函数。

英创公司提供的拨号管理库文件名为libautodial.so,在编译应用程序的时候,需要链接这个库文件,如果客户使用光盘资料中提供的eclipse工具进行开发,在编译之前需要对工程进行设置,设置方法为选择对应的工程,通过右键菜单进入properties,点击右侧C/C++ Build子栏目,选择其中Settings这一项,在C++ Linker子项中添加库文件和路径,如下图:

工程设置

Windows开发环境和Ubuntu开发环境下面的eclipse设置方法相同。对运行环境的英创主板,其根文件系统/lib路径下已经做好了相应设置,客户不需要再做任何操作,直接运行编译好的程序即可。

拨号管理库文件libautodial.so一共提供了三个API函数,分别实现连接,查询和断开的功能,函数接口定义如下:

/**
* 启用拨号管理线程
*
* 函数会创建一个线程用来进行拨号管理
* 实现自动拨号,以及断线重连
*
* 返回值说明:
* 0 表示成功开启拨号管理线程。
* -1 表示在当前环境无法运行。
*
*/
intpppconnt_start();
/**
* 查询连接状态
*
* 返回值说明:
* 0 表示运行连接正常。
* -1 表示连接断开。
* -2表示信号太差或者没有读取到SIM卡导致连接失败。
* -3表示连接模块无响应,建议检查硬件连接和驱动是否加载成功。
*
*/
intpppconnt_check();
/**
* 关闭连接
*
* 关闭拨号管理功能,并关闭已建立的连接。
*
*/
voidpppconnect_stop();

pppconnt_start()函数会创建一个线程来对整个拨号的流程实现自动管理,管理线程一开始便会自动判断接入的模块型号,根据模块型号调用对应的拨号脚本,然后进行拨号和断线重连。所以对于客户来说,只需要调用一次pppconnt_start()函数,就会创建出一个实现拨号管理的线程,不需要再执行其他任何操作。

pppconnt_check()函数提供了查询功能,如果在使用过程中客户想获取连接状态,可以通过调用该函数的返回值来判断,0为正常连接,-1为连接断开,-2为信号弱或者无信号,可能是由于没有接天线或者没有读取到SIM卡造成的,-3为模块无响应,可能是由于没有识别到外部模块或者没有加载驱动造成的。如果一直无法连接成功,客户可以根据查询的返回值判断原因,还可以增加硬件复位和重新上电等操作来保证模块的正常工作。

pppconnt_stop()函数,这个函数会关闭拨号管理线程,以及已经建立好的连接。在客户需要关闭拨号连接或是对模块进行复位等操作时,建议先调用pppconnt_stop()函数释放相关资源。

客户在主板上电后,需要先加载4G模块对应的驱动,因为需要驱动加载成功后,才能通过虚拟串口使用程序与模块之间进行交互,加载驱动可以放在程序或者脚本中进行,驱动加载的方法可以参考文章:《英创Linux主板基于3G和4G的无线通讯方案》中的说明。驱动加载成功后,系统会生成对应的虚拟串口,这时就可以调用拨号管理库中提供的pppconnt_start()函数进行拨号连接了。根据上面的介绍和对API函数的描述,我们使用以下代码进行简单的测试:

int i1;
//先调用一次pppconnt_stop,关闭连接
pppconnt_stop();
//通过代码加载驱动,测试使用华为ME909s,VID=0x12d1,PID=15c1
system("insmod /lib/modules/4.1.15/usbserial.ko vendor=0x12d1 product=0x15c1");
//开启拨号管理
i1 = pppconnt_start( );
printf("i1 = %d\n", i1);
while(1)
{
i1 = pppconnt_check();
if(!i1) {
printf("connected!\n");
//main processing
//...
sleep(5);
}
else {
//返回值为-,说明连接断开
if(i1 == -1)
printf("disconnect!\n");
//返回值为-2,说明检测不到信号,可能是没有检测到SIM卡,这里执行退出
else if(i1 == -2) {
printf("singal is weak, please check SIM card!\n");
break;
}
//返回值为-3,说明模块无响应,这里执行退出
else if(i1 == -3) {
printf("there is no response, please check hardware!\n");
break;
}
}
sleep(1);
}
//退出循环,调用pppconnt_stop,释放相关资源
pppconnt_stop();
return 0;

例程中对于查询到的状态,我们只是做了简单的打印,方便观看效果,在遇到没有读取到SIM卡和模块无响应的情况下就退出,在实际使用中可以加入硬件复位和重新上电等操作。应用处理由sleep函数代表,可更换为其他处理代码。例程测试效果如下:

建立连接

可以看到系统通过程序加载驱动后,生成了相应的虚拟串口,然后启用了拨号管理功能,start_connect()函数读出模块为ME909s,根据模块型号调用了对应的拨号脚本,连接成功后,检测线程打印出connected,说明连接已经成功。为了测试效果我们通过终端关闭拨号连接,模拟断线的情况,来测试是否能够实现自动重连:

断开模块

从打印信息可以看到,在我们通过终端关闭拨号连接后,检测程序打印的信息提示disconnect,说明此时拨号连接已经断开。pppconnt_check()函数检测到连接断开但是硬件正常,于是返回-1,根据测试代码,就会打印disconnect信息。接下来我们查看拨号管理线程是否会自动重连,打印信息如下:

重连过程

根据打印信息可以看出,在断开连接以后,10s左右的时间便重新连接上了,重新连接的过程是在拨号管理线程内部进行的,当检测程序提示了connected,就说明重连成功。

成功连接后,会生成ppp0网口,可以使用ifconfig命令查看,如果要使用ppp0网络,采用linux标准的网络编程就可以了,即创建套接字绑定ppp0,然后进行需要的设置和操作,关于这部分的说明,可以参考我们提供的编程应用手册以及例程step3_tcpserver、step4_tcpclient。

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

    关注

    4

    文章

    3615

    浏览量

    91619
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6104

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 ?235次阅读

    浪潮澎湃,国产主板迎来黄金时代!

    2025年7月,表示必须在2027年底前完成信100%替代,覆盖基础硬件、基础软件等核心领域。在信息技术应用创新浪潮席卷下,国产主板作为计算机系统的骨架,正从幕后走向台前。政策加持、技术
    的头像 发表于 07-21 14:00 ?95次阅读

    4G开关量对传模块:不限距离无线通讯,PLC远程控制

    4G全网通+云端对传技术,将PLC的开关量信号(DI/DO)无线延伸至全球任意角落,零布线、零距离限制、毫秒级响应,彻底重构工业设备控制边界! 一、 关键特性 通讯距离:4G覆盖即可达
    的头像 发表于 06-24 15:36 ?228次阅读

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

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

    4G DTU 无线数传模块:RS232/485转4G,稳定不宕机

    4G DTU(Data Transfer Unit)是一种工业级物联网数据传输设备,主要用于将串口(如RS232/RS485)数据通过4G网络无线传输到远程服务器或云平台。它是工业自动化、远程监控
    的头像 发表于 05-29 14:58 ?381次阅读

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

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

    4G DTU未来发展趋势与展望

    在工业物联网蓬勃发展的当下,4G DTU 作为关键的数据传输设备,正深刻地改变着各行业的数据交互模式。从工业自动化到智能交通,从环境监测到智慧农业,4G DTU 凭借其高效、灵活的无线数据传输能力
    的头像 发表于 04-22 18:44 ?208次阅读

    工业4G路由器赋能智慧停车场高效管理

    服务器或管理中心,实现信息的集中处理和管理。智慧停车场车牌识别与道闸控制:当车辆进入停车场时,车牌识别系统通过摄像头采集车牌信息,并将数据通过工业4
    的头像 发表于 03-26 12:03 ?363次阅读
    工业<b class='flag-5'>4G</b>路由器赋能智慧停车场高效<b class='flag-5'>管理</b>

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

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

    用txb0102给华为4g模块串口通讯,输入波形失真严重的原因?

    我用txb0102给华为4g模块串口通讯,一端接华为4g模块,另一端接转换线(ttl转usb)连接电脑,华为me909s-821.串口输出是1.8v电平,转换线芯片用的pl2303,输出电平
    发表于 12-12 06:22

    示例篇 关于4G模组的模块信息

    今天我会把4G模组的模块信息做出详细介绍,做出示例,展示给大家,如果觉得有用的话请点赞收藏。
    的头像 发表于 11-12 12:07 ?946次阅读
    示例篇  关于<b class='flag-5'>4G</b>模组的模块<b class='flag-5'>信息</b>!

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 ?1029次阅读

    物联网行业中通信断线现象介绍以及如何实现

    断线是指在计算机网络中,当网络连接遇到异常中断或者断开时,系统会自动尝试重新建立连接,以保证网络通信的连续性和稳定性。这是一种常见的网络通信技术
    的头像 发表于 09-21 09:56 ?1550次阅读
    物联网行业中通信<b class='flag-5'>断线</b><b class='flag-5'>重</b><b class='flag-5'>连</b>现象介绍以及如何实现

    4G工业路由器赋能智能停车场远程监控管理

    水平,结合物联网技术4G工业路由器应用,为智慧城市建设智能停车场的实现提供了有力支持。停车场管理4G网络覆盖广泛:4G网络已经在全国范围内实
    的头像 发表于 08-08 14:04 ?1003次阅读
    <b class='flag-5'>4G</b>工业路由器赋能智能停车场远程监控<b class='flag-5'>管理</b>