CH365技术话题

你好,在编写应用程序时,CH365DLL.LIB文件怎么使用呢?为什么在“组建”的时候,会出现如下的错误呢?

Linking... test program.obj : error LNK2001: unresolved external symbol _Read_data test program.obj : error LNK2001: unresolved external symbol _Write_data Debug/test program.exe : fatal error LNK1120: 2 unresolved externals 执行 link.exe 时出错.

能否提供一般的初始化CH365的源程序呢?


没有正确的加入库或头文件等 要例子代码的话,留个邮箱,发编译好的 DEBUG365 工程给你。


在开发应用程序的时候,编译没有问题,就是“组建”的时候,发现调用“子程序”错误 ,如:读写存储器的函数。。。。。注:尚未安装CH365驱动程序。

邮箱:个人信息保护,已隐藏

谢谢!


有的函数调用,要有硬件、安装驱动才可以。


Ch365ReadMemByte(&mMemBase->mCh365MemPort[0x00],&mByte); //从0x00H单元中读出数据,保存在mByte中

Ch365WriteMemByte(&mMemBase->mCh365MemPort[0x00],0x02); //在0x00H单元中写入数据0x02

如果要对以上两个函数进行声明的话,应该怎么声明呢 ?函数类型,及变量类型是什么呢?


在 CH365DLL.H 中写得很清楚

BOOL WINAPI CH365ReadMemDword( // 从存储器读取一个双字 PVOID iAddr, // 指定存储器的地址,虚拟地址 PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据

BOOL WINAPI CH365WriteMemByte( // 向存储器写入一个字节 PVOID iAddr, // 指定存储器的地址,虚拟地址 UCHAR iByte ); // 待写入的字节数据


编译好的 DEBUG365工程 已发您的邮箱 个人信息保护,已隐藏 请查收 可以用VC 5.0, VC6.0 等打开。


你好,应用程序在编译时,会出现函数类型不明确的警告,被系统默认为整型,如下: warning C4013: 'Ch365WriteMemByte' undefined; assuming extern returning int warning C4013: 'Ch365ReadMemByte' undefined; assuming extern returning int

存储器读写函数应该怎么声明呢?尝试了前面您回复的声明,执行结果还是一样的。

谢谢!


我尝试编译和组建您发出来的“DEBUG365”文件的代码,在尚未安装驱动程序的前提下,可以组建通过;; 这是我的源程序代码,您看看有什么地方需要修改?谢谢。。 #include #include #include #include #include #include"CH365DLL.H" //如果在DOS下使用,请使用DOS库 //#define DIN_PORT 0xef //数据输入端口

// UCHAR Read_data(); //读(上传)1个字节数据的子程序

// void Write_data(char data); //写(下传)1个字节数据的子程序和主程序

void main( ) { UCHAR mByte,in_data,out_data;

mPCH365_MEM_REG mMemBase; //存储器基址 //若要使用DLL则需要先加载 if(LoadLibrary("CH365DLL.DLL")==NULL) return; //加载DLL失败

if(CH365OpenDevice(TRUE,FALSE)==INVALID_HANDLE_VALUE) return; //打开CH365设备

CH365SetA15_A8(0x7f); //开始数据采集信号

CH365GetMemBaseAddr(&mMemBase); //获取系统为CH365自动分配的I/O基址 in_data=0x02;

CH365SetA15_A8(0xdf); //设置A13为低电平,片选双端口RAM Ch365WriteMemByte(&mMemBase->mCh365MemPort[0x00],0x02); //在0x00H单元中写入数据0x02H CH365SetA15_A8(0xff);

CH365SetA15_A8(0xdf); //设置A13为低电平,片选双端口RAM Ch365ReadMemByte(&mMemBase->mCh365MemPort[0x00],&mByte); //从0x00H单元中读出数据,保存在mByte中 CH365SetA15_A8(0xff);

out_data=mByte; printf("mByte = %c\n",mByte); CH365CloseDevice();

if(out_data==in_data) printf("test correct!\n"); else printf("test wrong!\n"); }


你好,问题已经解决,是大小写的问题!! 另外,请问,从存储器读出的数据单元“mByte”中的数据结果是什么类型的数据呢?是什么进制的呢?


你好,请问用“Ch365WriteMemByte”\“Ch365ReadMemByte”这两个函数时,操作的是CH365内部的存储器空间?还是可对片外的扩展存储器操作的??

在试验时,我把片外存储器的片选信号A13去掉,怎么还是能够顺利地存取数据呢?


一般情况下,CH365 的本地存储器被映射到计算机的存储器空间,读写本地存储器是在存储器空 间进行的


只有登录才能回复,可以选择微信账号登录