我正在使用C#通过modbus rs485 rs2322相电表进行通信,其中包括电源电压.
我必须通过总线发送数据,以便我可以接收读数.
我连接了普通电线并短接了发送和接收.
收到数据并触发此事件:
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
byte[] buff = new byte[sp.BytesToRead];
//Read the Serial Buffer
sp.Read(buff, 0, buff.Length);
string data= sp.ReadExisting();
foreach (byte b in buff)
{
AddBuffer(b); //Add byte to buffer
}
}
Run Code Online (Sandbox Code Playgroud)
然后将此缓冲区发送到另一个函数,即:
private void AddBuffer(byte b)
{
buffer.Add(b);
byte[] msg = buffer.ToArray();
//Make sure that the message integrity is correct
if (this.CheckDataIntegrity(msg))
{
if (DataReceived != null)
{
ModbusEventArgs args = new ModbusEventArgs();
GetValue(msg, …Run Code Online (Sandbox Code Playgroud) 我对 ajax 加载内容的引导工具提示有疑问。
我知道还有其他答案,但它似乎对我不起作用,我尝试了很多方法。
首先,我使用以下代码初始化引导工具提示:
$(document).on('ready', this, function(e){
$("[rel='tooltip']").tooltip();
});
Run Code Online (Sandbox Code Playgroud)
这对于普通内容非常有效,但对于 ajax 则无效。
其次,我在这里发现我需要添加一个选择器,因此我以这种形式向 ajax 加载的内容添加了一个类:
<button data-toggle="modal" rel='tooltip' data-placement="top" data-original-title="View Supplier Details" data-target="#view-supplier" type="button" class="btn btn-success view-supplier btn-xs margin-left-5 tooltip-aj">
Run Code Online (Sandbox Code Playgroud)
并将工具提示的调用修改为以下内容:
$(document).on('ready', this, function(e){
$("[rel='tooltip']").tooltip({
selector:'tooltip-aj'
});
});
Run Code Online (Sandbox Code Playgroud)
但仍然无法让它发挥作用。有人能帮帮我吗。
问候!
我在使用C#导入的dll中遇到变量类型的问题.它是用面向对象的pascal编写的,它说它是用Delphi开发工具开发的.
在库的手册上,它说shortstring是一个打包的字节数组.第一个字节是长度,以下是exaclty 255个字节,带有我需要的字符串数据.
所以在C#中导入dll后我写道:
[return: MarshalAs(UnmanagedType.LPArray)]
Run Code Online (Sandbox Code Playgroud)
然后从dll调用函数:
public static extern byte[] xxxx();
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
无法封送"返回值":无效的托管/非托管类型组合
另一方面,我尝试了以下内容:
[return: MarshalAs(UnmanagedType.SafeArray)]
Run Code Online (Sandbox Code Playgroud)
这次我得到错误:
排名18727的SafeArray已传递给期望排名为1的数组的方法
你能告诉我我做错了什么,首先是正确的,从编译的库中得到一个短串?
问候