首先我放上
NlsRPCApi参考手册与编程指南.doc 里的一部分在UBaseIII中,RPC作为一种设备,当在掌上机上启动RPC设备后,在PC上就可以使用RAPI对底层进行操作了。
打开RPC设备:
DEV * dev;
dev = GetDeviceByName("RPC");
if (dev == NULL) {
printf("error");
return;
}
CUDC *pDC = GetDC();
pDC->ClearDC();
pDC->TextOut(20,2,"启动RPC模块");
rpc_info rpcinfo;
rpcinfo.nPort = 1;
rpcinfo.nBaudRate = 115200;
rpcinfo.bCompress = FALSE;
dev->dev_ops->((int)&rpcinfo, 0);
while (KbdGetKey(TIMEOUT_INFINITE) != KEY_CANCEL);
dev->dev_ops->dev_close(1);
pDC->ClearDC();
pDC->TextOut(20,2,"设备已停止,任意键退出");
while(KbdGetKey(TIMEOUT_INFINITE) == 0);
另外还有一种实现方法,代码如下:
char buf[64];
rpc_info rpcinfo;
rpcinfo.nPort = 1;
rpcinfo.nBaudRate = 115200;
rpcinfo.bCompress = TRUE;
m_hRpc = OpenDevice((int)&rpcinfo, 0);
if(m_hRpc){
sprintf(buf, "RPC ( %d ) 已启动。", m_nRate);
}
else{
sprintf(buf, "启动RPC ( %d ) 失败!", m_nRate);
}
在上面的用到的一个rpc_info结构,它的定义如下:
typedef struct rpc_info{
int nPort; //端口号
int nBaudRate; //波特率
BOOL bCompress; //是否采用压缩报文
}URPCINFO, *PURPCINFO;
在NLS_041机型中,由于内存只有512K,所以应该把结构中的bCompress设为FALSE。
在他们提供的DLL里有以下函数
NLS_CloseFile
NLS_CopyFile
NLS_CopyFileEx
NLS_CopyFileExW
NLS_CopyFileW
NLS_CreateDirectory
NLS_CreateDirectoryW
NLS_CreateFile
NLS_CreateFileW
NLS_DeleteFile
NLS_DeleteFileW
NLS_FindClose
NLS_FindFirstFile
NLS_FindFirstFileW
NLS_FindNextFile
NLS_GetFileAttributes
NLS_GetFileAttributesW
NLS_GetFileSize
NLS_GetFileTime
NLS_GetStoreInformation
NLS_GetSystemInfo
NLS_GetSystemPowerStatus
NLS_GetVersion
NLS_GlobalMemoryStatus
NLS_MoveFile
NLS_MoveFileW
NLS_OpenFile
NLS_OpenFileW
NLS_RapiInit
NLS_RapiUninit
NLS_ReadFile
NLS_RemoveDirectory
NLS_RemoveDirectoryW
NLS_Ring
NLS_RingW
NLS_SetBaudrate
NLS_SetEndOfFile
NLS_SetFileAttributes
NLS_SetFileAttributesW
NLS_SetFilePointer
NLS_SetFilePosToPre
NLS_SetFileTime
NLS_WriteFile但是我没有看到上面红色的函数,
没有这个函数似乎就打不开设备,
如果不打开设备,
那么PC和终端就不能进行通信请我应该如何让PC和终端进行通信,我试过NLS_RapiInit,但这个函数好像是初始化串口的,因为当扫描枪关闭的时候,它也成功返回。所以我想可能是就是用OPENDEVICE这上函数来打开设备,不过DELPHI中似乎不能识别这个函数,这个函数是从什么地方来的?是不是我能成功调用后就能让PC和扫描枪通信了?

解决方案 »

  1.   

    NLS_RapiInit 说明2.1 HRESULT WINAPI NLS_RapiInit (int nPort, int nRate, BOOL bCompress = 1);
    说明
    初始化RPC,并设置RPC通信参数。
    返回值
    如果成功返回1,失败返回0。
    参数表
    参数 类型及说明
    nPort Int, 端口号,从1开始
    nRate Int, 波特率,如115200,57600等
    bCompress BOOL, 是否压缩通讯, 默认为有压缩
    注解
    在NLS_041机型中,由于内存只有512K,所以应该把结构中的bCompress设为FALSE。我调用了此函数还是不能复制文件到掌机中,是不是我还缺少了什么过程
      

  2.   

    这样,我这里有一个C++的结构体,想转成DELPHI的,转换完成立马给分typedef struct _UOSVERSIONINFO{
    DWORD dwMajorVersion; 主版本号
    DWORD dwMinorVersion; 次版本号
    DWORD dwBuildNumber; 编译版本号
    } UOSVERSIONINFO, *LPUOSVERSIONINFO;想转成DELPHItype
      LPUOSVERSIONINFO=^_UOSVERSIONINFO;
      _UOSVERSIONINFO=record
     dwMajorVersion:DWORD;
     dwMinorVersion:DWORD;
     dwBuildNumber:DWORD;
    end;
    这样似乎不对
      

  3.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP