我现在熟悉PLC,特别是WAGO 750-8206 PLC.它提供了一个Linux操作系统,可以运行CoDeSys程序.控制器上连接了一些I/O模块:750-530,750-430和750-600.我想知道的是:
是否有可能编写一个在PLC上运行的C++ linux应用程序并获取/设置数字输入和输出?
更好的是:我可以编写一个"与I/O对话"的CoDeSys程序并处理所有逻辑,同时可以通过C++ linux程序访问吗?这个想法是这样的:我希望CoDeSys程序能够检查两个数字输入.如果两者都很高,则应将变量设置为定义的值.linux应用程序应该能够读取该变量并进行进一步处理(例如将JSon数据发送到服务器或类似服务器).
此外,当linux应用程序收到触发命令的消息时,我需要能够将命令从linux应用程序发送到CoDeSys程序,以便切换数字输出(或在模拟输出上设置值等).
我对这个主题的任何想法和评论都非常感激,因为我对这个主题完全不熟悉.提前致谢!
我想知道如何获得对象的实际基础对象?我有一个名为MessageBase的基类,以及许多继承此基类的类,它们本身可以被不同深度的其他类继承.一个例子:
有些类继承如下:
MessageBase --> ValueMessage --> DoubleValueMessage
Run Code Online (Sandbox Code Playgroud)
其他人喜欢这样:
MessageBase --> ValueMessage --> [some class] --> [some other class] --> TestMessage
Run Code Online (Sandbox Code Playgroud)
我需要的是:我有一个这些继承类的对象,让我们说一个DoubleValueMessage的实例.我事先并不知道这个对象的类型,我所知道的是,有些是嵌套继承,有一个基础对象(MessageBase)我需要设置它的属性.
现在我试图获得对该基础对象的引用.所以试图获得DoubleValueMessage所基于的ValueMessage,但我不明白如何.
我这样试过:
public bool SetPropertyValue(object obj, string prop, object value)
{
var item = obj.GetType().GetProperty(prop);
//MessageBox.Show(obj.ToString());
if (item != null)
{
item.SetValue(obj, value);
return true;
}
else
{
if (obj.base != null)
{
SetPropertyValue(obj.base, prop, mb);
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是这样的:我传入一个对象(例如DoubleValueMessage类型),我想要设置的属性(基本对象,甚至是第一个属性?)和一个需要替换给定属性的对象,在我的case的MessageBase.所以我认为递归迭代继承层次结构直到找到我需要设置的属性是个好主意.
问题是:.base关键字似乎不是获取基础对象的正确方法.
我怎么才能得到它?在此先感谢您的帮助!
我们正在构建一个将在嵌入式 ARM 设备上运行的 Qt4.8/C++ 应用程序(无 QML)。该设备不断接收需要保存在对象中的大量数据点的值。现在我想将 UI 元素绑定到此模型对象的特定属性,以便自动始终在 UI 中显示当前值和最新值。
Qt 中有我可以使用的机制吗?或者我是否必须跟踪任何更改并手动更新 UI?如果有人能给我一个非常基本的例子,例如如何将标签文本数据绑定到对象的双值属性,那就太好了。提前致谢!
我遇到了以下代码:
foreach (var row in datatable.Rows.Cast<DataRow>())
{
some code here
}
Run Code Online (Sandbox Code Playgroud)
现在,我认为在 foreach 循环中进行转换是不正确的,因为我认为它每次循环时都会进行转换。但是,我可能错了,也许编译器足够聪明?
在相关说明中:我怎样才能为自己解决这样的问题?
我是这些设备的新手,即使它们非常便宜,我也不会不必要地想要它们.
我用esptool将NodeMCU固件刷到我的模块上.这样做时,我需要指定文件写入的地址,通常是0x00000.这是否意味着固件实际上包含引导加载程序?或者它位于闪光灯的单独区域?
如果引导加载程序本身包含在固件文件中,那么中断的闪存过程会使模块无效,我想?
谢谢你的澄清!
我想知道实现以下目标的最短和最安全的方法是什么:
假设我有一个值为1.200123. 在我们的可视化中,我想用两位小数显示这个值,所以我现在使用myFloat.toFixed(2);,这给了我1.20.
没关系。但是如果结果输出的小数位只有零呢?例如1.000043变成的值1.00。
对于上述情况:如何省略小数点和零并仅1作为输出获得,最好不解析和操作来自 的字符串.toFixed(2)?
我们有一个ASP.NET MVC Web应用程序,可与带有EF6的MS SQL Server Epress数据库进行通信。在数据库中,我们有一个大于10 mio的大型存档表。行。存档表相对简单,只有少量的ID,一个值和一个时间戳。
我已经有了一个“工作”控制器方法,该方法从DbContext中获取数据作为我的archiveEntry实体的IQueryable,然后将其放入.ToList()的列表中,从中创建一个CSV文件,将其压缩后返回。客户端作为文件下载。但是,问题在于整个表太慢了,因为有250000行,这大约需要15分钟。
有没有一种方法可以在数据库中直接查询和创建CSV并将其直接传递给客户端?
c# ×3
c++ ×2
arm ×1
asp.net-mvc ×1
bootloader ×1
codesys ×1
csv ×1
data-binding ×1
esp-12f ×1
esp8266 ×1
firmware ×1
inheritance ×1
javascript ×1
linux ×1
nodemcu ×1
numbers ×1
object ×1
plc ×1
qt ×1
qt4.8 ×1
reflection ×1
sql-server ×1