检测有几个串口windowsapi
答案:2 悬赏:40 手机版
解决时间 2021-02-25 01:53
- 提问者网友:谁的错
- 2021-02-24 20:31
检测有几个串口windowsapi
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-01-19 08:21
//创建一个串口通讯
SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
CurrentPort.ReadBufferSize = 128;
CurrentPort.PortName = comName; //端口号
CurrentPort.BaudRate = bandRate; //比特率
CurrentPort.Parity =parity;//奇偶校验
CurrentPort.StopBits = stop;//停止位
CurrentPort.DataBits = databit;//数据位
CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常
//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
CurrentPort.DataReceived += Sp_DataReceived;
CurrentPort.Open();
定义一个变量 byte[] receiveStr;
//绑定的事件处理函数
private static void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
if (sp == null)
return;
byte[] readBuffer = new byte[sp.ReadBufferSize];
sp.Read(readBuffer, 0, readBuffer.Length);
//赋值
receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。
}
//你要求的按钮事件可以这么写
private void button1_Click(object sender, EventArgs e)
{
if(receiveStr!=null)
{
变量 xxx=receiveStr;
}
}
SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
CurrentPort.ReadBufferSize = 128;
CurrentPort.PortName = comName; //端口号
CurrentPort.BaudRate = bandRate; //比特率
CurrentPort.Parity =parity;//奇偶校验
CurrentPort.StopBits = stop;//停止位
CurrentPort.DataBits = databit;//数据位
CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常
//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
CurrentPort.DataReceived += Sp_DataReceived;
CurrentPort.Open();
定义一个变量 byte[] receiveStr;
//绑定的事件处理函数
private static void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
if (sp == null)
return;
byte[] readBuffer = new byte[sp.ReadBufferSize];
sp.Read(readBuffer, 0, readBuffer.Length);
//赋值
receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。
}
//你要求的按钮事件可以这么写
private void button1_Click(object sender, EventArgs e)
{
if(receiveStr!=null)
{
变量 xxx=receiveStr;
}
}
全部回答
- 1楼网友:独行浪子会拥风
- 2020-11-06 15:23
api reference是windows最基础的功能包装,暴露给用户的接口。这个接口对于所有windows来说基本不变。最基础的意思就是说,如果你写程序都用这一级别的函数调用,你的软件将适用于各种windows环境。
platform sdk,顾名思义,就是在不同的windows版本中(桌面windows,移动windows等),针对硬件设备的不同,进行了功能再定制,然后重新打包的一套开发接口,比如手机 版本里面的windows的一些操作和台式pc略有差异。由于大多数开发还是基于pc平台,从api到platform并没有实质的差异,你看到的一些platform下的函数很可能只是什么变化都没有直接包过来用了,所以看起来差不多,使用感受也没大区别。但如果你接触到移动设备windows开发,api和platform之间差异可能就体现出来了。这一级别的包装体现了平台差异,功能上比原始的api有所增强。
最后mfc。mfc是采用了面向对象技术,从对象的角度重新打包api的一套包含windows窗体逻辑对象等等的、具有可视化等高级特性的开发包。与api、platform sdk相比较,前两者只是对接口函数进行归类整理,类似于工厂生产的各个零件做一个大目录的索引,而mfc则是根据编程实际使用的功能,制作了各种半成品部件,你可以直接用已有的部件来减少更低层次的零件组装来生产最终应用软件。
这样来看,能用mfc当然最省事,不过mfc是捆绑在微软发布的visual c++开发环境中的一套sdk,当你不使用vc来作为开发工具的时候,mfc提供的这些半成品零件是不能兼容于其他开发环境的(比如c#),所以mfc省事了,但局限性就多了。
至于你发现有些函数三个层次上都存在,那是很自然的事情。无论再如何包装一个函数,由于某些函数的特殊性、重要性,衍生平台需要将其直接暴露给开发者使用,那么这个函数最好索性不需要任何变化,一直沿袭下来即可。
若是你做mfc开发,这三个级别的函数都可以用的。若是你做pc下windows应用但是不是mfc开发,你可以用api、platform,但是不能再用mfc;若是你要做移动设备的windows应用,个人pc下的platform sdk也不能再用。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯