当前位置: 首页 > news >正文

网站建设学生作业成品html网页完整代码作业

网站建设学生作业成品,html网页完整代码作业,北京建设安全生产协会网站,导航网站头部代码文章目录 背景解决方案注意事项 背景 目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。 上位机这边会定时对PLC的某个opcua变量进行写操作。但是假如PLC离线或者说拔掉网线,上位机就会直接崩溃死机,并且报如下的错误&…

文章目录

  • 背景
  • 解决方案
  • 注意事项

背景

目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。
上位机这边会定时对PLC的某个opcua变量进行写操作。但是假如PLC离线或者说拔掉网线,上位机就会直接崩溃死机,并且报如下的错误:

[2024-08-12 10:07:25.528 (UTC+0800)] warn/channel	Connection 2516 | SecureChannel 28 | Receiving the response failed with StatusCode BadConnectionClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/client	Received Publish Response with code BadSecureChannelClosed
[2024-08-12 10:07:25.528 (UTC+0800)] warn/channel	Connection 0 | SecureChannel 0 | Could not receive with StatusCode BadConnectionClosed
[2024-08-12 10:07:25.528 (UTC+0800)] info/client	Client Status: ChannelState: Closed, SessionState: Created, ConnectStatus: Good

有没有什么办法可以监控client的状态,了解其是什么时候掉线,掉线了我就不写就行了。

解决方案

幸亏,是有这么一个回调函数的,参考官方的例子【open62541/examples/client_async.c】可以发现,我们可以对UA_ClientConfig中的stateCallback进行赋值,也就是注册一个状态回调函数,从而获取客户端的状态变化。

static void
onConnect(UA_Client *client, UA_SecureChannelState channelState,UA_SessionState sessionState, UA_StatusCode connectStatus) {printf("Async connect returned with status code %s\n",UA_StatusCode_name(connectStatus));
}---UA_ClientConfig *cc = UA_Client_getConfig(client);cc->stateCallback = onConnect;

一般检测channelState就行

// 状态变化回调函数,可以通过这个监测客户端是否断开连接
// 此回调函数的线程,貌似就是UA_Client_run_iterate所在的线程?起始应该不是,恐怕是在哪个线程调用了UA_Client相关的函数,就在那个线程;
static void
onStateChanged(UA_Client *client,UA_SecureChannelState channelState,UA_SessionState sessionState,UA_StatusCode connectStatus)
{if(channelState == UA_SECURECHANNELSTATE_CLOSED) // 连接已断开{qDebug() << "callback thread:" << QThread::currentThread();qDebug() << "连接已断开--------" << QDateTime::currentDateTime();---}
}

注意事项

这个opcua库对多线程的处理比较差,很容易造成冲突。一定要自己加个线程锁,否则程序很容易就崩掉。


参考:
【open62541/examples/client_async.c】

http://www.ds6.com.cn/news/81674.html

相关文章:

  • 企业网站报价方案模板下载怎么在百度做网站推广
  • 网站开发用苹果电脑seo关键词优化技术
  • wordpress添加熊掌号seo网站权重
  • 做网站交互效果用什么软件想学网络营销怎么学
  • wordpress 邮件 key长沙网站seo优化公司
  • 如何销售网站开发淘宝seo
  • 手机网站建设教程视频站优化
  • 免费网站建设模块外贸网站制作推广
  • 小学生做愛网站北京网站优化
  • 网站前台怎么做网络营销软文范例500字
  • 网站开发教程 布局百度优化师
  • 河北邯郸做网站的公司哪家好网络营销的成功案例有哪些
  • 网站关键词分析工具查权重工具
  • 福永镇网站建设关键词竞价广告
  • 浙江八达建设集团有限公司网站腾讯疫情实时数据
  • 做外包网站搭建上海网站关键词排名优化报价
  • 网店美工课程标准东莞seo网站排名优化
  • wordpress列表无图像seoul是什么意思中文
  • 自助建站百度东莞seo建站公司
  • 高端个性化网站开发免费的网站
  • 宁海哪家做网站比较可靠推广网站文案
  • 廊坊做网站外包seo优化的价格
  • 咸阳网站开发联系方式网站标题优化排名
  • 微号网站开发工具刷网站排刷排名软件
  • 建网站的设备seo推广怎么样
  • 郑州浩方网站建设智联招聘济南seo公司报价
  • 上海的外贸网站建设公司价格东莞网络公司网络推广
  • 山东网站建设排行榜seo公司是什么意思
  • 养殖网站源码百度快速排名 搜
  • 做英语教具的网站网站关键词排名优化工具