最匹配的重载方法具有一些无效参数?这个怎么解决?

soulmate 2015-02-01 08:39:19
有个dll
internal interface IModbusOperator
using System;
namespace xxx
{
{
void open(object parameter);
void open(ExSerialPort serPort);
bool isOpen();
void close();
void closeNoResetFlag();
void setReadWriteTimeout(uint readTimeout, uint writeTimeout);
void setRetryCount(int count);
bool readCoil(byte slabId, ushort startAddress, ushort length, out bool[] dest);
bool readCoilInput(byte slabId, ushort startAddress, ushort length, out bool[] dest);
bool readHoldingRegister(byte slabId, ushort startAddress, ushort length, bool isReverse, out uint[] dest);
bool readHoldingRegister(byte slabId, ushort startAddress, ushort length, bool isReverse, out float[] dest);
bool readHoldingRegister(byte slabId, ushort startAddress, ushort length, out ushort[] dest);
bool readInputRegister(byte slabId, ushort startAddress, ushort length, bool isReverse, out float[] dest);
bool readInputRegister(byte slabId, ushort startAddress, ushort length, bool isReverse, out uint[] dest);
bool readInputRegister(byte slabId, ushort startAddress, ushort length, out ushort[] dest);
void writeCoil(byte slabId, ushort startAddress, bool[] value);
void writeHoldingRegister(byte slabId, ushort startAddress, bool isReverse, float[] value);
void writeHoldingRegister(byte slabId, ushort startAddress, bool isReverse, int[] value);
bool writeHoldingRegister(byte slabId, ushort startAddress, ushort[] dest);
}
}

在c#中调用的一个例子,其中下面这行出错 dest = this.master.ReadCoils(slabId, startAddress - 1, length);

bool IModbusOperator.readCoil(byte slabId, ushort startAddress, ushort length, out bool[] dest)
{
bool result;
try
{
if (!this.isOpen || this.serialPort == null)
{
throw new Exception("请先打开串口");
}
if (!this.serialPort.IsOpen)
{
this.open();
}
if (slabId > 255)
{
throw new Exception("设备ID不能>255");
}
Monitor.Enter(this);
try
{
this.currentRetryCount = 0;
while (true)
{
try
{
dest = this.master.ReadCoils(slabId, startAddress - 1, length);
}


错误 101 与“Modbus.Device.IModbusMaster.ReadCoils(byte, ushort, ushort)”最匹配的重载方法具有一些无效参数

错误 102 参数 2: 无法从“int”转换为“ushort”

该怎么修改呢?
...全文
517 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
soulmate 2015-02-01
  • 打赏
  • 举报
回复
ok了!一样的修改! 多谢了!
soulmate 2015-02-01
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
dest = this.master.ReadCoils(slabId, (ushort)(startAddress - 1), (ushort)length);
if (this.modbus == null) { throw new Exception("请先打开串口"); } ushort[] dest = new ushort[] { value1 ? 1 : 0 }; 还有这句value1 ? 1 : 0 也报同样的错,这个应该怎么改呢?
本拉灯 2015-02-01
  • 打赏
  • 举报
回复
dest = this.master.ReadCoils(slabId, (ushort)(startAddress - 1), (ushort)length);

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧