Eclipse中applet工程,每次调用dll打开关闭串口:
一个打开按钮:CreadFile(),WriteFile(),ReadFile(),CloseHandle().都是同步形式,
当我再次点击这个按钮时就报错了,不是打开--creatfile报错,而是writefile是报错,
getlasterror()返回的是空的--afxmessagebox(getlasterror());一是不了解,java调用这个dll,究竟是怎么一回事,二是,本身也不了解windows 下dll工作的方式,三是,串口打开,关闭是不是还有什么技巧呢?

解决方案 »

  1.   

    初步断定和串口的打开关闭无关,
    情况是这样的:我使用两个按钮:每个按钮的处理函数都是从dll中来的A&B这两个函数的名称不一样(在这之前是一样的)
    这个来自dll的处理按钮事件的函数--A&B,调用dll中的同一个函数就可以运行。但是同样的一个函数一样不能执行两次,比如这里,同一个按钮点击第二次的时候就会报错:报错是向串口发送数据失败!
    现在把调用方式重新整理如下:
    问题的开始:1111
         两个按钮--b1&b2,调用同一个函数---A,A呢又调用dll里面的另外一个函数GET().
         问题:b1&b2任何一个按钮点击后,再点击同一个按钮或者另外一个都会:写串口错误。
       现在:2222
         两个按钮--b1&b2,调用不同的函数--A&B,A&B调用dll里面的另外一个函数GET().
         问题:b1&b2两个按钮都可以点击一次,点击第二次的时候就会出问题:写串口错误。
      通过上面问题表现的分析:
         被按钮直接调用的函数只能执行一次,而被他们的下一级函数则没有问题,并且应该不是串口打开关闭的问题。
       因为2222的时候,是同一个二级函数(在 这里是GET())在打开,写,读,关闭串口都没有问题。问题就出在了一级函数(按钮事件的处理函数那里。)即使是同一个按钮,按第二次的时候都会报错。
          问题来源:java的applet中调用dll。