dll中的一个函数
int read_standard(char rbuf[])
说明:读当前重量
参数:char rbuf[] --- 字符数组,存放返回的数据,要求不小于18字节那c#中对应的char rbuf[]用什么类型去调用呢。
我尝试了用string类型调用,但得不到返回值。
用了stringbuilder调用,得到的返回值是乱码
int read_standard(char rbuf[])
说明:读当前重量
参数:char rbuf[] --- 字符数组,存放返回的数据,要求不小于18字节那c#中对应的char rbuf[]用什么类型去调用呢。
我尝试了用string类型调用,但得不到返回值。
用了stringbuilder调用,得到的返回值是乱码
解决方案 »
- C#调试时数据丢失的问题。
- c#2008 word统计,wordApp.ActiveDocument.ComputeStatistics,统计不了韩语
- c# winform datagirdview 操作 修改到数据库
- 软件工程师考试相关
- 关于拉伸图片问题
- c# + sql server ce建表失败
- 怎样获得远程计算机的系统目录?如何将本地文件复制到该目录下?没有System.Managenment命名空间
- 求开发一个简易的网站搜索引擎的建议?高分(100分)
- 類別庫引用類別庫的問題
- 升星散分,并求千万级数据库架构
- c# winform 下的 datagridview 控件中行数据联动更新问题(见图)
- 数据库中如何返回多行记录的行号?
read_standard(rbuf);
string str=System.Text.Encoding.Default.GetString(rbuf);看str得值
byte[] rbuf= new byte[100];
read_standard(rbuf);
希望这里面的read_standard(rbuf); rbuf能把dll里的char rbuf传出来。
[DllImport("xxx.dll")]
static extern int read_standard([Out] byte[] rbuf);
{ [DllImport("pos_ad_dll.dll", CharSet = CharSet.Auto)]
public static extern int read_standard(ref byte []szRecvBuf);
}后面调用的是:
try
{
int nErrorCode = Class1.read_standard(ref byte szResult); if (nErrorCode == 0xF0)
sTestResult = "Success";
else
sTestResult = "Fail";
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
sTestResult = "Fail";
}编译通不过,提示无效的表达式顶byteDLL中的函数说明
1. int read_standard(char rbuf[])
说明:读当前重量
参数:char rbuf[] --- 字符数组,存放返回的数据,要求不小于18字节
返回:>0xf0 错误
=0xf0 正确
(注:返回值为16进制表示的正数,C++表示为0xf0,Delphi表示为$f0,下同)
举例:int xbuf[18];
ret=read_standard(xbuf);
显示格式:
xbuf[0]: 指示灯标志位
bit0:表示第一位稳定灯,如为1则稳定灯亮,否则不亮;
bit1:表示第二位零位灯,如为1则零位灯亮,否则不亮;
bit2:表示第三位去皮灯,如为1则零位灯亮,否则不亮;
xbuf[1]-xbuf[7]: ASCII码,重量值(Kg),带小数点和正负号
xbuf[8]: ‘P’,表示皮重的开始位置
xbuf[9]-xbuf[16]: ASCII码,皮量值(Kg),带小数点和正负号
int nErrorCode = Class1.read_standard(ref szResult); 先初始化byte数组,让其长度不少于18,再调用函数.