#include "stdafx.h"
#include<windows.h>
#include <iostream>
HINSTANCE readdll;
typedef bool(WINAPI *Read_Error)(char* MError, int Meter_No, int Dev_Port);
Read_Error Readerr = NULL;
int _tmain(int argc, _TCHAR* argv[])
{
char* str = new char[65535];
readdll = LoadLibrary(L"kpdev.dll"); //加载动态链接库
if (readdll != NULL)
{
std::cout << "加载成功!\n";
Readerr = Read_Error(GetProcAddress(readdll, "Error_Read"));
if (Readerr(str,8,1))
{
std::cout << str;
}
}
FreeLibrary(readdll); // 动态释放DLL
return 0;
}
是一个校准台官方提供的dll库,需要读取台子上的误差数据,是用过串口读取的,使用的USB转232线, 串口使用的COM1, 不接USB转485线的时候,也就是不存在COM1是读取不到数据,但是没有报异常,接上USB转485线之后,报了一个异常,截图在下面
下面是报错截图
下面是这个dll文件函数的官方说明
下面是官方说明里面调用例程
//读误差 注意参数*cstrData 要分配空间,否则可能内存数据错误
void __fastcall TFrmMain::MMOprErrorReadClick(TObject *Sender)
{
StatusBarMain->Panels->Items[0]->Text = "";
bool tt = false;
AnsiString strPort = ComboBoxPort->Text.SubString(4, ComboBoxPort->Text.Length()-3);
char *cstrData = new char[20];
memset(cstrData, 0, 20);
boRes = Error_Read(&cstrData, 2, StrToIntDef(strPort, 2));
if (tt)
Edit1->Text = AnsiString(cstrData);
else
Edit1->Text = "ERROR";
delete [] cstrData;
}