none
C# 调用 (读写器)vc dll 有问题 求大牛帮助! RRS feed

  • 问题

  • 由于项目需要对RFID读写器进行开发,现在手头只有读写器的dll(VC  无源代码)

     DrfSetBaudRate

    函数原型:DrfSetBaudRate (HANDLE hCom, unsigned short BaudRate ,unsigned char ReaderAddr)

    功能说明:设置计算机和读写器之间通讯的波特率,波特率越大,通信速度越快

    输入参数:

    hCom-串口句柄,DrfCommOpen(HANDLE * hCom, char *com_port)函数的hCom返回值,以下相同

    BaudRate-波特率设置值,取值为0、1、2、3、4,分别对应的波特率值为9600、19200、38400、57600、115200bps

    ReaderAddr—读写器的地址,默认值为255,在485网络中应用,相当于tcp/ip的网络地址

         返回结果:成功返回0,失败返回负数

         示例代码:

           unsigned char temp = BaudRate;

    If(DrfSetBaudRate(hcom,temp)==0)

    {

    //成功

           }

     

    我的C#测试代码如下:

    [DllImport("DrfApiV10.dll", EntryPoint = "DrfSetBaudRate",CharSet = CharSet.Ansi)]
            //设置计算机和读写器之间通讯的波特率,波特率越大,通信速度越快
            public static extern int DrfSetBaudRate(ref IntPtr hCom,  UInt16 BaudRate, Byte ReaderAddr);

            private void button3_Click(object sender, EventArgs e)
            {
                IntPtr hcom = new IntPtr();
                UInt16 bd = 1;
                string com_port = "COM1";
                DrfCommOpen(ref hcom, com_port);
                int temp = DrfSetBaudRate(ref hcom, bd, 255);
                if (temp != 0)
                {
                    MessageBox.Show(temp.ToString());
                }
                else
                    MessageBox.Show("chenggong");
            }

    编译运行后 temp返回值为-15,这个结果不对。

    请问各位大牛 该如何解决 拜谢!

    • 已更改类型 lei_kisskill 2010年8月19日 12:49 貌似串口 都打开不是所需要的那个
    2010年8月19日 3:24

答案

  • 1、用该DLL,在VC编写测试DEMO验证。大致封装的形式就是打开串口、设置波特率。

    2、查找错误返回码的含义。他返回的肯定不是标准的错误返回码(也就是说不是通过GetLastError()获得的)。

    3、确认你自己串口1(COM1)是存在,且没有被其他软件占用。

    4、硬件是否有问题

    2010年8月20日 5:28

全部回复

  • 1、用该DLL,在VC编写测试DEMO验证。大致封装的形式就是打开串口、设置波特率。

    2、查找错误返回码的含义。他返回的肯定不是标准的错误返回码(也就是说不是通过GetLastError()获得的)。

    3、确认你自己串口1(COM1)是存在,且没有被其他软件占用。

    4、硬件是否有问题

    2010年8月20日 5:28
  • 谢谢哈  !

    串口1和硬件应该是没问题的,我用读写器自带的测试软件时,是可以读写tag的。

     

    2010年8月20日 6:05