我现在正在开发一个电池监控程序,目前遇到了一个很大的难题需要在此求助大家帮忙。
问题如下:
1、厂家已经给我提供了软件开发的协议,例如检测控制单元通信是否成功的协议指令是 :BBH 0 0 44H 通信正确的话,返回80H,否则返回:81H,
2、我现在已经能够通过Socket编程的方式,访问串口服务器的端口。而且有返回值(通过调试可知)。但是结果返回的不是16进制数据,好像是一些符号比如一个方块等。问题是如何通过写代码才能够让程序给我返回这个80H和81和呢 现在问题卡在这里了。希望大家帮帮我。最好给我几行实例代码。
3、我在开发中应该采用同步还是异步通讯???哪一种更好??
我最关心的是第二个问题。
这个返回80H的代码怎么写呀 怎样才能返回这个80H呢??在发送控制指令的时候是用一个字节数组的形式发的。
需不需要在发送的时候在指令的前后加上什么东西以示区别?? 读取结果的时候怎么取出正确的结果?
问题如下:
1、厂家已经给我提供了软件开发的协议,例如检测控制单元通信是否成功的协议指令是 :BBH 0 0 44H 通信正确的话,返回80H,否则返回:81H,
2、我现在已经能够通过Socket编程的方式,访问串口服务器的端口。而且有返回值(通过调试可知)。但是结果返回的不是16进制数据,好像是一些符号比如一个方块等。问题是如何通过写代码才能够让程序给我返回这个80H和81和呢 现在问题卡在这里了。希望大家帮帮我。最好给我几行实例代码。
3、我在开发中应该采用同步还是异步通讯???哪一种更好??
我最关心的是第二个问题。
这个返回80H的代码怎么写呀 怎样才能返回这个80H呢??在发送控制指令的时候是用一个字节数组的形式发的。
需不需要在发送的时候在指令的前后加上什么东西以示区别?? 读取结果的时候怎么取出正确的结果?
1.发送问题
byte[] myCommand = System.Text.Encoding.ASCII.GetBytes("\xbb\x00\x00\x044");
ns.Write( myCommand , 0, myCommand .Length ); //NetworkStream ns; ns = yourClient.GetStream();
2.你看到的是80H或81H所代表的字符,只需要定义一个byte变量直接等于它即可
byte tempByte;
tempByte=返回值;//tempByte.tostring()即为字符串“80”或“81”
3.不管是Socket还是串行通信最好都采用异步方式
byte bb = (byte) 0x80;Socket的所有接收方法都是接收byte[]的,不知道你怎么接收到了字符。
异步方法都是以Begin开头的一系列方法。
异步同与同步的区别在于:
以服务器端对监听Socket进行处理连入请求为例同步:Accept的处理在同一线程中(除非你自己去实现多线程)。异步:BeginAccept和EndAccept是Socket.Accept的异步版本。
支持在单独线程中进行处理。比如说你可以收到一个连入请求以后,单独的开启一个线程。专门
为该连接提供服务。至于具体选用什么方案,要看你的项目是什么样的。:)