TYPE ICR_CommandCtrlInfo
    lpszComPort as String
    dwBaudRate as Long
    hInstance as Long
    ICR_EventPRoc as Long
    lpvArglist as Long
    lpvReservedl as Long
    lpvReserved2 as Long
End TYPEdeclare Function ICR_OpenCommand Lib "DLL的名字"(lpInof as ICR_CommandCtrlInfo)   As Long

解决方案 »

  1.   

    TYPE ICR_CommandCtrlInfo
        lpszComPort as String * 4 '这个地方是不是应该加上长度.
        dwBaudRate as Long
        hInstance as Long
        ICR_EventPRoc as Long
        lpvArglist as Long
        lpvReservedl as Long
        lpvReserved2 as Long
    End TYPEdeclare Function ICR_OpenCommand Lib "DLL的名字"(lpInof as ICR_CommandCtrlInfo)   As Long
      

  2.   

    呵呵,如果不加长度,那么就不对头了,不过谁说是要*4?再说加了长度也觉得不对头。我觉得应该是:
    TYPE ICR_CommandCtrlInfo
        lpszComPort as Long 
        dwBaudRate as Long
        hInstance as Long
        ICR_EventPRoc as Long
        lpvArglist as Long
        lpvReservedl as Long
        lpvReserved2 as Long
    End TYPE
    别搞错了,LPCSTR是C字符串的指针类型。
    所以传入lpszComPort应该传入字符串的指针StrPtr(ComPort)还有,那个API是stdcall调用规范的吗?如果不是的,那么上面的声明也都是错的拉,呵呵,VB只支持stdcall,呵呵,不太清楚WINAPI这个宏
      

  3.   

    也许不是宏吧,呵呵,几乎没有用过VC,因为经常使用BCB:)
      

  4.   

    >>那个API是stdcall调用规范的吗?
    怎么知道符合不符合stdcall?
    从这里看不出来吗?
    __EXPORT_TYPE DWORD WINAPI ICR_OpenCommand(const lpICR_CommadCtrlInfo lpInfo);    //command transmit and receive port open
      

  5.   

    zhangyan_qd(doggyzone) 的应该可以吧,先试试看好了
      

  6.   

    Dim info As ICR_CommandCtrlInfo
    info.lpszComPort = StrPtr("COM1") 'info.lpszComPort = "COM1"
    info.dwBaudRate = 19200
    info.hInstance = Me.hDC
    info.ICR_EventPRoc = 0
    info.lpvArglist = 0
    info.lpvReservedl = 0
    info.lpvReserved2 = 0ICR_OpenCommand (info)
    我这样调用,但出现编译错误:
    Variable reauired--can't assign to this experssion参数在文档中是这样说明的:
    lpszComPort:
    A pointer to designate a string which ends with NULL as a name of device of serial port, such as "COM1","COM2". dwBaudRate:
    Designates transmission speed. (1200, 2400, 4800, 9600, 19200, 38400) hInstance:
    Designates the instance handle of application.(argument of WinMain() ICR_EventProc:
    Designates the address of call back function.When designates NULL, does not call a call back function. lpvArglist:
    Designates the pointer to pass to a call back function. 
    Almost the same role as lpvThreadParm of CreateThread() lpvReserved1:
    Reserved area. Sets NULL. lpvReserved2:
    Reserved area. Sets NULL. 
    因为这只是一个初始化命令,callback不要也可以,其他参数应该给什么值?
      

  7.   

    其它参数取值我就不太清楚了,没有用过这个API
      

  8.   

    info.hInstance = Me.hDC '这里的hInstance和hDC有关系么?呵呵
      

  9.   

    Eastunfail(东方不败):
    hInstance:Designates the instance handle of application
    程序的句柄咯,应该给什么?
    info.hInstance=?
      

  10.   

    我觉得直接赋字符串就行:
    info.lpszComPort = "COM1"
    因为我发现很多API调字符串的时候都是这样直接传的
    而hInstance我觉得传DC过去是不对的,它应该是指向一个进程实例的句柄,我想填个0应该可以吧?