当前位置:编程学习 > C#/ASP.NET >>

神呐 !!这是呐哩问题???

3.ReadSoftVer(int *VerCount; Byte *VerData)
  功能:读取发卡器版本号
  参数:VerCount---返回控制器版本号位数
        VerData---返回控制器版本号字符
  返回值:0---成功
  1-- 串口未连接
        2---收取数据包头数据位数不成功
  3---数据包头数据CRC校验错误
        4---收取用户数据位数不成功
      5---用户数据CRC校验错误

        [DllImport("TDODLL30.dll", EntryPoint = "ReadSoftVer")]
       private static extern int ReadSoftVer(ref int VerCount, ref byte[] VerData);

 private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                int count = 0;
                byte[] bit = new byte[1967];
                int icdev = ReadSoftVer(ref count, ref bit);            
                string str = Encoding.GetEncoding(0).GetString(bit);              
                if (icdev == 0)
                {
                    listBox1.Items.Add("成功");
                    MessageBox.Show(str);
                    listBox1.Items.Add(bit);
                }
                else if (icdev == 1)
                {
                    listBox1.Items.Add("串口未连接");
                }
                else if (icdev == 2)
                {
                    listBox1.Items.Add("收取数据包头数据位数不成功");
                }
                else if (icdev == 3)
                {
                    listBox1.Items.Add("数据包头数据CRC校验错误");
                }
                else if (icdev == 4)
                {
                    listBox1.Items.Add("收取用户数据位数不成功");
                }
                else if (icdev == 5)
                {
                    listBox1.Items.Add("用户数据CRC校验错误");
                }
            }
            catch
            {
            }


 int icdev = ReadSoftVer(ref count, ref bit);  ---这句出错了
。。。
运行库遇到了错误。此错误的地址为 0x79e7c5eb,在线程 0xd44 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。







--------------------编程问答-------------------- 你的结贴率也太低了吧 --------------------编程问答--------------------
引用 1 楼 dsjoy 的回复:
你的结贴率也太低了吧

  没分结不了,
水平太低也得不到分


  ----------只为学习
   --------------------编程问答-------------------- --------------------编程问答--------------------
引用 3 楼 it0329 的回复:


大哥你别晕啊
   帮忙想想 --------------------编程问答-------------------- 传说有些dll调试的时候会出错,但是到发布的正式版就不会错,楼主可以试试! --------------------编程问答--------------------
引用 5 楼 zzmsyt 的回复:
传说有些dll调试的时候会出错,但是到发布的正式版就不会错,楼主可以试试!

。。。
发布???正式版??
   --------------------编程问答--------------------   [DllImport("TDODLL30.dll", EntryPoint = "ReadSoftVer")]
  private static extern int ReadSoftVer(ref int VerCount, ref byte VerData);

 byte[] bit = new byte[1967];
  int icdev = ReadSoftVer(ref count, ref bit[0]);   
--------------------编程问答-------------------- 这结贴率比0都难看 --------------------编程问答-------------------- --------------------编程问答-------------------- 你试下改为int count = 1967;
不清楚你的接口,我猜想传入时那个count也许是有意义的。 --------------------编程问答--------------------
引用 7 楼 wangchangming 的回复:
[DllImport("TDODLL30.dll", EntryPoint = "ReadSoftVer")]
  private static extern int ReadSoftVer(ref int VerCount, ref byte VerData);

 byte[] bit = new byte[1967];
  int icdev = ReadSoftVer(ref co……

错误 2 参数“2”: 无法从“ref byte”转换为“ref byte[]” d:\我的文档\Visual Studio 2005\Projects\bbbbb\bbbbb\Form1.cs 91 56 bbbbb
--------------------编程问答-------------------- private static extern int ReadSoftVer(ref int VerCount, ref byte VerData);
这里也要改,参数改过之后还是报错,可能要把C++动态库也添加到项目中来,之前遇到过这样的问题. --------------------编程问答--------------------
引用 12 楼 wangchangming 的回复:
private static extern int ReadSoftVer(ref int VerCount, ref byte VerData);
这里也要改,参数改过之后还是报错,可能要把C++动态库也添加到项目中来,之前遇到过这样的问题.



还是 不行 
错误 1 与“bbbbb.Form1.ReadSoftVer(ref int, ref byte)”最匹配的重载方法具有一些无效参数 d:\我的文档\Visual Studio 2005\Projects\bbbbb\bbbbb\Form1.cs 91 29 bbbbb
错误 2 参数“2”: 无法从“ref byte[]”转换为“ref byte” d:\我的文档\Visual Studio 2005\Projects\bbbbb\bbbbb\Form1.cs 91 56 bbbbb
--------------------编程问答-------------------- 123
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,