要写一个dll
1.能够被vc,vb,delphi,pb等调用的通用dll
2.串口控制仪表 ,dll能自动接收数据,用户程序需要得时候可以通过函数把数据返回用户程序
3.估计需要用多线程才能实现2
4.我想用win32dll,可害怕不能使用多线程,如果用mfc是不是能够被其他语言调用?哪位大哥有好的方法或者建议都可以,就当是救在下的命了
多谢多谢如果有这样的例子更好了   动态库(DLL)中建立串口监视线程的实时串口通信

解决方案 »

  1.   

    这个不难吧?1 , dll应该是跟语言无关。
    2 , 你可以用接口来控制dll打开串口什么的,用接口来取数据。
    3 , 这个看你的需求了,异步操作的话,可能至少要两个吧?一个扫描串口,一个扫描接收应用程序操作,当然,如果是要完善,应该是有几个线程比较合适。
    4 , 多线程啥都能用,_beginthread是windows函数,你怕什么。
    串口操作的例子多了去了。你把他写到函数中,给前端应用程序提供接口来开启和关闭就可以了
      

  2.   

    只要导出函数时用_stdcall修饰就能被vb,delphi,pb等调用了,
    vc调用时申明函数时也要加_stdcall
      

  3.   

    to: beijingshizi(北京石子)(★★★★★) 
    谢谢指教,我不太会用vc,请问有例子吗?还有就是任务就是dll,不能做com  :)请大家继续给些意见 xx
      

  4.   

    顺便说一下,我不会用mfc,想直接用纯c实现
      

  5.   

    那你可以用自建active X
      

  6.   

    用dll要能被vb delphi vc调用,需要注意函数调用约定
      

  7.   

    写成com吧,这个调起来最方便,写起来不难的
      

  8.   

    用mfc regular dll就可以,接口:
    extern "C" __declspec(dllexport) 
    BOOL __stdcall open_port(int iPort, const char *pszParam);extern "C" __declspec(dllexport) 
    BOOL __stdcall read_port(char *pszBuf);extern "C" __declspec(dllexport) 
    BOOL __stdcall close_port();
    dll 中用创建线程,在线程中接收串口数据
      

  9.   

    1.能够被vc,vb,delphi,pb等调用的通用dll
    最好用.def方式导出。只要你编译成DLL,任何语言都能调用,不用担心语言不同而受影响。
      

  10.   

    建议楼主利用COM技术来完成,你上面所说的东西,我都做过的,完全可以实现的,COM的本质就是建立一个脱离语言的程序,你可以里用vc,vb,bj,delphi来制作,来使用,很方便的。多线程当然也可以完成,利用MSCOMM控件,那样的话可以减轻你的开发负担。当然你也可以利用Api函数自己来写了,
      

  11.   

    谢谢诸位的回答
    我重复一下有几个问题
    1. 所有语言能直接调用
    2. dll里面能自动接受数据,保存到变量里面供用户程序取(应该是用多线程吧)
    3. 不用mfc,用api能实现吗?请继续支持,很着急to: tshyson
    我也是打工的,我只能给你我的口粮钱,多了没有啊:)
      

  12.   

    用 extern "C" __declspec(dllexport) 
    BOOL __stdcall open_port(int iPort, const char *pszParam);
    声明,在.def中加入函数名就可以被其他语言调用。dll里创建线程自动接收数据,保存在变量里,等调用。用api也可以实现,不过我用的mfc regular dll。
    我做过很多串口dll
      

  13.   

    如果需要,我可以继续加分,多少都可以 <2.5k就行
      

  14.   

    能不能用.net,
    .net语言无关不是吗?
    要用mfc做dll的话,应该很简单,
    应该能被VB,pb调用的吧!微软的产品应该很通用的才对,
    不过我没试过,你可以做一些小的程序测试一下就知道了吧!
      

  15.   

    Win32的多现成,比MFC的还好用。
    ::CreateThread
    ::SetEvent
    ::WaitForMultiObject
      

  16.   

    网上很多串口通信的例子,稍一包装就可以做成ATL的COM,
      

  17.   

    I think COM is better!!!!!!!!!!!
      

  18.   

    经过1个多月的奋战,终于做成了
    多谢各位的支持
    尤其是 qc_jrj和 tshyson(钢盔)
    给了很大的帮助,心中无限感激............:)