CSerialPort类改造讨论
因为实际应用的的需要,小弟最近在学用CSerialPort类学写串口通信程序,关于这个类,有几个问题想请教一下:第一,怎么解决不能发送0x00的问题;第二,怎么把他改造为有长度为1000的缓冲区,我若是接收数据量不大,有无必要设置缓冲区,第三,PC与单片机通信,我接收单片机数据时一般是一个字节,而CSerialPort内定义为收到的是string类,还有我发送的是45,怎么转化为十六进制给单片机,用强制转化函数吗?第四,比如我用单片机测一个正弦电压,想再上位机上显示出来,有什么比较好的方法,虽然很多大侠传过控件,可是由于没有详细说明,小弟几乎看不懂,还有一个就是我在上位机上画个波形,怎么转化为数据传给单片机进行处理,哪位哥哥有相关的例子或教程,指导下小弟,小弟我感激不尽 能不能先说一下你的开发语言啊??就你的第三个问题,比如说(MFC),你用 OnCommunication(WPARAM ch, LPARAM port) ,没有说CSerialPort内定义为收到的是string类啊?这里用的就是 WPARAM 回复【1楼】lxlylm 刘
-----------------------------------------------------------------------
MFC,C++,这WPARAM 是多态数据类型,我就奇怪,有些程序里就直接当做stringl类型用了,比如他 CString a;a=+ch;怎么能这么用呢 你都说了【这WPARAM 是多态数据类型】,那当然可以当CString使用了
WPARAM在32位系统是32位的unsigned int,但在理论上,WPARAM LPARAM的含义可以程序员任意指定的,但是最好遵从MFC中的习惯
所以说,你是可以自定义消息来发送通知和传送数据
再引申开来,WPARAM是可以传送数据的,但他不能传送所有的数据,在16位平台上就是有限制的,32平台应该也有的(因为这个WPARAM本来就是16位系统留下来的),具体不知道哪位兄弟试过... 回复【3楼】lxlylm 刘
-----------------------------------------------------------------------
奥 早就不用这个类了,到codeproject上再找个吧 回过头来看你的问题:
第一:这个类发送的应该都是char*(LPCTSTR这里也是char*),因此不如考虑从下位机着手,让下位机识别成数字而不是字符串,其实自己定义一下发送的格式不就行了(好听点说,这里你自己定义一个协议吧)
第二:这个类有设置 → writebuffersize,另外,无论如何,buffer是一定要的
第三:同第一个问题
第四:MFC有chart控件的,这个我帮不了你,我不用C做UI的
CSerialPort类不是我用来封装的串口类,但基本相同,因此以上如果有不对的地方,请指正
此外,你用的CSerialPort是哪个,我找到过不下3个版本的CSerialPort类,有一个还是97年某个著名公司发布的
这里我传其中一个
点击此处下载 ourdev_654227GI356G.txt(文件大小:21K) (原文件名:CSerialPort_No1.txt) 回复【6楼】lxlylm 刘
-----------------------------------------------------------------------
我的是论坛上某个好心的大侠给的,不知道什么版本 能用就行 直接用api吧,多方便呀 回去给你看看。 回复【9楼】zc3909
-----------------------------------------------------------------------
没有 这方面的教程 mark 看龚建伟的书。。。
网上也有书和代码。
页:
[1]