
回复
生得再平凡,也是限量版。
大家好,我是小七
以USB串口通信为例,生成DLL并被CAPL调用
打开
Vector安装地址的CAPLdll文件夹,选择合适的VS工程
typedef struct CAPL_DLL_INFO4{
char cdlName[MAX_CDL_NAME2]; // 在CAPL中调用时显示的函数名
CAPL_FARCALL adr; // 函数地址,即vs工程中函数定义时的函数名
const char* categoryName; // 函数在CAPL中的所属目录,可以用于对函数的分类
const char* hintText; // 对该函数功能的描述介绍(在CAPL中显示)
char resultType; // 函数的返回值类型,用CAPL中的类型的首字母大写去表示
int parCount; // 函数的参数个数
char parTypes[MAXCAPLFUNCPARS_8_1]; // 函数的参数类型,用CAPL中的类型的首字母大写去表示
unsigned char array[MAXCAPLFUNCPARS_8_1]; // 函数的参数是否是数组:\001表示是数组;\000表示不是数组。默认则为\000
const char* parNames[MAXCAPLFUNCPARS_8_1]; // 函数显示的参数名(在CAPL中的声明介绍时)}
CAPL_DLL_INFO4;
1. 首先用串口助手把USB控制器调试OK(发命令使其动作)
2. 在USB代码(网上搜的免费代码)里找到串口初始化,关闭串口,发命令函数,如下图:
3. 把USB的源函数包装成CAPL能识别的函数类型
CSerialPort mySerialPort;//首先将之前定义的类实例化
int CAPLEXPORT far CAPLPASCAL OpenSerialPort(int Port)
{
int result;
if(mySerialPort.InitPort(Port, CBR_57600, 'N', 8, 1, 0x0001) == 1)
{
result = 1;
}
else
{
result = 0;
}
return result;
}
void CAPLEXPORT far CAPLPASCAL CloseSerialPort()
{
mySerialPort.ClosePort();
}
void CAPLEXPORT far CAPLPASCAL OutputOrder(char pData[], int length)
{
mySerialPort.WriteData(pData, length);
}
6. 最后把函数放进CAPL要调用的结构体里
文章转载自公众号:总线网络