vs蓝牙串口接收了十六进制数显示在vc编辑框内容设置成十六进制,现在希望这串数字显示为我想输入的文字,请问该怎么做?

上位机串口通信中如何发送16进制数,而不是当做ASCII字符发送(基于VS2010) [问题点数:20分]

使用SerialPort.Write()发送16进制数,总是会被当做ASCII字符发送,比如发送0xFA,实际发送F和A的ASCII代码,如何能发送,求高手路过给予指点

串口的模式有binary和ASCII,在哪里找,取决于你用的什么方法。是API还是控件之类的,搜一下你用的技术加上关键字binary。

串口的模式有binary和ASCII,在哪里找,取决于你用的什么方法。是API还是控件之类的,搜一下你用的技术加上关键字binary。
串口的模式有binary和ASCII,在哪里找,取决于你用的什么方法。是API还是控件之类的,搜一下你用的技术加上关键字binary。
能具体一点吗?之前也考虑到Binary的问题,但是一直 没找到设置的方法
能具体一点吗?之前也考虑到Binary的问题,但是一直 没找到设置的方法

LZ也得具体一点说说你用的哪种方法实现的串口。


LZ也得具体一点说说你用的哪种方法实现的串口。


LZ也得具体一点说说你用的哪种方法实现的串口。

硬件并不知道你加载的是什么。实际上是你的软件对数据的处理造成的。

匿名用户不能发表回复!
}

关于串口接收并解析数据 [问题点数:50分,结帖人yalunwang123]

        
if (len == 0) //不包含任何完整的任务(比如说还没有接受到第一个消息的结束标志

ProcessCommand完成得很快(通常只有几毫秒),所以不会卡住读取线程。不需要等待命令执行,就开始读取新的数据。

命令使用(系统系统线程池上的)子线程并发执行。

串口接收不开线程行不行

串口接收不开线程行不行

所有的线程都可以不开。

实际的系统是为了性能和用户(UI交互时)操作体验而设计的。如果你只是完成基本逻辑,永远也不用考虑使用线程的。所以说,如果你在“还看不懂基本逻辑”的时候,你只要把 ThreadPool.QueueUserWorkItem(...)  这句话外边的“壳儿”去掉、仅留下里边的代码,就行了。

我们只是习惯了而已,设计一个通讯程序,首先会定下“哪个操作必须异步执行”的规则,然后写程序。并不是所有人都习惯使用线程。

程序我临时写的,没有测试,只是保证不会出现语法错误而已。如果有执行错误,你自己调试、改一下。

关键是数据结构和流程问题,只要你看懂就行了。

串口接收不开线程行不行
所有的线程都可以不开。

感谢上面那位大大,虽然没看太懂,主要是我水平未够。经过努力,我已经做成功了。下面分享下:

接收到的信息(list中的内容),不一定只有一个命令(例如发消息的设备很多、发送速度远比上位机处理速度快),可能有多2个甚至多个。你的程序是假设每一次接收到“一个”命令,只执行一次命令就结束。

你的程序并不能保证正确,只是说你现在的测试环境“恰好”设备比较慢、而双绞线距离比较短、主机比较空闲,因此基本上都能恰好每当设备发来一条消息时能够满足 list[list.account-1]==0xD0&&list[list.account-2]==0xDE 这个条件。如果你能兼容“收到多条命令”的形式(甚至你能发挥想象力先来制造一个此类测试,然后再解决bug),程序将来用到实际的各种生产环境中才会比较可靠。

另外将来让程序变成一个教正规、可为中型应用而扩展的“设计升级”的建议:

1. DataReceive中的程序,应该清晰地是处理这个Receive流程的。你应该把判断任务类型和调用处理程序的代码,从这段程序中分离出去,不应该在这里出现一堆的 if...else 判断。

2. 将来还是要在子线程中执行命令解析和调用处理程序过程,而 Receive程序应该仅仅在从list中去掉一条条命令之后,立刻返回(不等命令执行就返回)。以免造成通讯延迟、甚至程序死锁。

接收到的信息(list中的内容),不一定只有一个命令(例如发消息的设备很多、发送速度远比上位机处理速度快),可能有多2个甚至多个。你的程序是假设每一次接收到“一个”命令,只执行一次命令就结束。

你的程序并不能保证正确,只是说你现在的测试环境“恰好”设备比较慢、而双绞线距离比较短、主机比较空闲,因此基本上都能恰好每当设备发来一条消息时能够满足 list[list.account-1]==0xD0&&list[list.account-2]==0xDE 这个条件。如果你能兼容“收到多条命令”的形式(甚至你能发挥想象力先来制造一个此类测试,然后再解决bug),程序将来用到实际的各种生产环境中才会比较可靠。

另外将来让程序变成一个教正规、可为中型应用而扩展的“设计升级”的建议:

1. DataReceive中的程序,应该清晰地是处理这个Receive流程的。你应该把判断任务类型和调用处理程序的代码,从这段程序中分离出去,不应该在这里出现一堆的 if...else 判断。


另外,if。。。else这个处理速度应该很快吧。你指的意思是在Receive程序里面开启一个线程吗,在这个线程里用来处理数据吗。

匿名用户不能发表回复!
}

我要回帖

更多关于 vc编辑框内容设置成十六进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信