小编Com*_*inu的帖子

Modbus通讯

我正在使用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)

c# modbus crc

7
推荐指数
1
解决办法
2万
查看次数

AJAX 内容的 Bootstrap 工具提示

我对 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)

但仍然无法让它发挥作用。有人能帮帮我吗。

问候!

ajax tooltip twitter-bootstrap

3
推荐指数
1
解决办法
3135
查看次数

如何使用p/invoke编组Delphi短字符串?

我在使用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的数组的方法

你能告诉我我做错了什么,首先是正确的,从编译的库中得到一个短串?

问候

c# delphi pinvoke marshalling

3
推荐指数
1
解决办法
924
查看次数

标签 统计

c# ×2

ajax ×1

crc ×1

delphi ×1

marshalling ×1

modbus ×1

pinvoke ×1

tooltip ×1

twitter-bootstrap ×1