有对串口的通讯熟悉的吗?关于最后一个异或效验位的问题.

thunderJ 2005-01-25 10:09:15
效验位FCS = (LEN ^ DATAS)
LEN和DATAS的值都已经有了,FCS的值如何算出
望给个CB里实现的例子,谢谢!!
  
...全文
100 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
icwin 2005-01-26
  • 打赏
  • 举报
回复
说得不清楚,
Private Sub clear_receivetext_Click() receivetext.Text = "" End Sub Private Sub clear_sendtext_Click() sendtext.Text = "" End Sub Private Sub close_Click() MSComm1.PortOpen = False '关闭串口 End Sub Private Sub Form_Load() MSComm1.CommPort = 4 '使用串行端口1 MSComm1.Settings = "9600,N,8,1" '设置波特率等 MSComm1.InputLen = 0 '清空从接收缓存器中读到的字符 MSComm1.PortOpen = True '打开端口 '这是整个的初始化过程 End Sub Private Sub open_Click() MSComm1.CommPort = 4 '使用串行端口1 MSComm1.Settings = "9600,N,8,1" '设置波特率等 MSComm1.InputLen = 0 '清空从接收缓存器中读到的字符 MSComm1.PortOpen = True '打开端口 End Sub Private Sub receive_Click() Dim strBuff As String Dim str() As Byte strBuff = MSComm1.Input str() = strBuff '接收数据处理为16进制 For i = 0 To UBound(str) If Len(Hex(str(i))) = 1 Then strData = strData & "0" & Hex(str(i)) Else strData = strData & Hex(str(i)) End If Next receivetext.Text = LCase(strData) '转换成小写输出 'dat = MSComm1.Input ' receivetext.Text = " q" 实现将接受到的数据以文本形式写到接收部分的窗体内这是核心代码。 End Sub Private Sub send_Click() On Error Resume Next '简单的错误处理 If MSComm1.PortOpen = False Then MsgBox "串口已关闭" End If Dim a() As Byte Dim l As Integer, s As String s = sendtext.Text l = Len(s) / 2 If l = Asc("0") And test <= Asc("9") Then test = test - Asc("0") ElseIf

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧