getlasterror 怎么用

已举报 回答
getlasterror 怎么用
问在线客服
扫码问在线客服
  • 回答数

    5

  • 浏览数

    7,299

5个回答 默认排序
  • 默认排序
  • 按时间排序

  ComHandle=CreateFile(Port,

GENERIC_READ||GENERIC_WRITE,

0,NULL,OPEN_EXISTING,NULL,NULL);

if(ComHandle==INVALID_HANDLE_VALUE){MessageBox(1); return 0;}

char tmpP[11]=9600,n,8,1;//设置通讯参数

DCB dcb;

if(GetCommState(ComHandle,&dcb)==0){MessageBox(2);return -1;}

if(BuildCommDCB(tmpP,&dcb)==0){MessageBox(3);return -1;}

if(SetCommState(ComHandle,&dcb)==0){MessageBox(4);return -1;}

COMMTIMEOUTS TimeOuts;//设置超时时间

GetCommTimeouts(ComHandle,&TimeOuts);

TimeOuts.ReadIntervalTimeout=2000;

TimeOuts.ReadTotalTimeoutConstant=400;

TimeOuts.ReadTotalTimeoutMultiplier=400;

TimeOuts.WriteTotalTimeoutMultiplier=40;

TimeOuts.WriteTotalTimeoutConstant=400;

if(SetCommTimeouts(ComHandle,&TimeOuts)==0){MessageBox(6);return -2;}
if(SetupComm(ComHandle,2048,1024)==0){MessageBox(7);return -3;}//设置缓冲区

//PurgeComm(ComHandle,PURGE_RXABORT||PURGE_RXCLEAR);

//PurgeComm(ComHandle,PURGE_TXABORT||PURGE_TXCLEAR);

if(ComHandle0){MessageBox(111);return 111;}

BYTE m_SendBuffer[1];

DWORD m_Number;

m_SendBuffer[0]=0x06;

if(WriteFile(ComHandle, m_SendBuffer, 1 , &m_Number,NULL)==0)

{

DWORD ErrorCode;

ErrorCode=GetLastError();

char temp[5];

sprintf(temp,%d,ErrorCode);

MessageBox(temp);

MessageBox(here!);

return -5;

}

CloseHandle(ComHandle);

// Write();

MessageBox(Port);

return 0;
取消 评论

我的也是双核系统,没有问题的。连续运行两次,如果没有出现only instance can run!,其实是因为第一次运行的程序已经结束了,这个程序很短,运行后一两秒就结束了。CMD黑窗口没有消失,但程序已经结束退出了。所以紧接着运行第二次不会出现only instance can run!提示
取消 评论
127是ERROR_PROC_NOT_FOUND。
前面的LoadLibrary是不是dll路径有误呢。
取消 评论
HMODULE hDLL = LoadLibraryA (H:\\Dlls\\DllForTest.dll);

改成
HINSTANCE hins = NULL;
hins = LoadLibraryA(XX.dll);

试试看
取消 评论
BOOL bResult; // 取得一个该GUID相关的设备信息集句柄 hDevInfoSet=::SetupDiGetClassDevs(&lpGuid,//&struct _GUID(UsbClassGuid), // class GUID NULL, // 无关键字 NULL, // 不指定父窗口句柄 if (hDevInfoSet==INVALID_HANDLE_VALUE){pp=1;//return 0; //AfxMessageBox(获取相关的设备信息集GUID句柄失败!); } // 申请设备接口数据空间else{pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, INTERFACE_DETAIL_SIZE); pDetail-cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); nCount = 0; bResult = TRUE; // 设备序号=0,1,2... 逐一测试设备接口,到失败为止 while (bResult){ifdata.cbSize = sizeof(ifdata); // 枚举符合该GUID的设备接口 bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄 NULL, // 不需额外的设备描述 &lpGuid, // GUID (ULONG)nCount, // 设备信息集里的设备序号 &ifdata); // 设备接口信息 pp=GetLastError(); if (bResult){// 取得该设备接口的细节(设备路径) bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 pDetail, // 设备接口细节(设备路径) INTERFACE_DETAIL_SIZE, // 输出缓冲区大小 NULL, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 if (bResult){// 复制设备路径到输出缓冲区 Sdn=pDetail-DevicePath; // 调整计数值nCount++;}}}// 释放设备接口数据空间 ::GlobalFree(pDetail); // 关闭设备信息集句柄
取消 评论
ZOL问答 > getlasterror 怎么用

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?