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

国内做网站上市公司seo网站关键词快速排名

国内做网站上市公司,seo网站关键词快速排名,app制作平台推荐,贵阳营销型网站建设文章目录 背景解决方案注意事项 背景 目前在利用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.yayakq.cn/news/717774/

相关文章:

  • 国外网站搭建平台asp.net mvc 5网站开发之美
  • 系部网站建设中期检查总结WordPress4.5取消了
  • 机械网站建设中心上海专业网站建设平台
  • 青岛建网站人织梦做的网站怎么加弹窗
  • 遵义哪里有做网站的网站开发推荐书籍
  • 青岛网站建设找正信郑州聚商网络科技有限公司
  • 制做网站首先应该怎么做网址导航网址大全
  • 深圳网站 制作信科便宜服务器试用
  • 娄底建设网站的公司陌陌引流推广软件
  • 商城网站开发与设计网站注册
  • cms 网站后台内容管理系统模板科技有限公司简介
  • 淘宝网站官网靖江做网站单位
  • 网站建设的案例泰州建站价格
  • 佛山高端网站默认网站停止
  • 柳州网站建设价格河北网站备案注销
  • 房产经纪人如何做网站吸客查企业哪个app最好
  • 网上商店网站设计临沂品牌网站推广
  • 如何用vs的c 做网站安阳网站建设商祺
  • 房地产行业网站开发搜索引擎网站盈利模式
  • 南京建站服务福建注册公司网上申请入口
  • 网站建设英文术语做wps的网站赚钱
  • 淡水网站建设公司温州网站关键词
  • 工信部备案系统网站蛋糕网站模版
  • 运城网站建设费用我要自学网视频教程
  • 做网站学什么专业网站上地图怎么做的
  • 青岛网站开发培训庆阳网站制作
  • 称多网站建设做公众号用什么网站
  • 站群网站内容陕西公共资源交易中心
  • 厅网站建设中标公告800多块做网站
  • 怎么建立一个博客网站吗苏中建设集团网站