如何让mscomm接收从餐饮机上传来的信号,为什么我的计算机和餐饮机挂上后,总是得不到从餐饮机发过来的信号.当IC卡在上面划过后,怎么会没有信息呢??
硬件都是好的.   哪位大哥,过来帮帮忙.给一个IC卡的小例子.

解决方案 »

  1.   

    使用mscomm控件实现如下:
    发送代码:
    Public Sub SendData()
    Dim str As String
    buffer2(0) = CByte((Val(s)) Mod 256)
    str = Hex(buffer2(0))
    MainForm.MSComm2.Output = buffer2
    End Sub
    接收代码:
    我用下面的程序获得数据
    Private Sub MSComm2_OnComm()
        Dim str As String
        Select Case MSComm2.CommEvent
          Case comEvReceive
          MSComm2.InputMode = comInputModeBinary
          Dim i, j As Integer
          j = MSComm2.InBufferCount
          ReDim buffer(0 To j - 1)
          buffer = MSComm2.Input
          For i = 0 To j - 1
           If startcommunication = 1 Then
            buffertem(buffercount) = buffer(i)
            buffercount = buffercount + 1
           End If
          Next i
        End Select
    End Sub
    其中mscomm控件的inbuffersize设置为1,outbuffersize设置为1,RThreshold为1
      

  2.   

    消费机(餐饮机)和电脑连在一起时,用厂家的软件是正常的.我如何偿试也无法得到数据.即使是在文本中显现出一点数据也可以哟,就是没反应.
      有没有办法哟.  消费机(餐饮机)和电脑连在一起,用MSCOMM控件,在窗口中的文本显示一下接到消费机传来的信号,说明有数据给计算机,最基本的发送和接收功能.
      

  3.   

    没人理哟。本收费系统的底层通讯协议如下(假设机器的地址号为16号):
    1、 计算机要求收费机上传最近一次刷卡的卡号及扣款额:计算机向收费机发送 16 + 2 + 1 三个整数字节。此命令也用于发卡。
    收费机返回 
    (a)无刷卡状态:16+11字节BBh+AAh(十六进制数)
    (b)有效刷卡状态:16 + 5个字节的压缩BCD码卡号 + 6个字节的十进制码扣款额(每个字节大小为0- 9之间的数,前5个字节为整数,后1个字节为小数)+ CRC。所有数据高位均在前面,CRC是它前面11个字节的异或,CRC用于校验,实际应用中可忽略。
    2、 下传余额:  格式:地址 + 5 + 2 + 3个字节的十进制码余额,整数在前。以16号机,卡中余额 853元为例,就是:计算机向串口发送:16、5、2、0、85、30  共六个整数字节。
    3、 余额不 足:               格式:地址 + 2 + 3
    4、 规定时间内的重复消费:   格式:地址 + 2 + 4
    5、 非法卡(非本系统卡、挂失卡):格式:地址 + 2 + 56、 修改日期:格式:地址+5+6+3个字节的日期码。返回:地址+96。
    7、 修改时间:格式:地址+5+7+3个字节的时间码。返回:地址+96。
    8、 网络通讯测试: 格式:地址+02+08  返回:地址+96。
    工作流程: A: 上位机 (PC),B: 下位机(收费终端,a为地址)   1. A 发送指令1(a+02+01)  =>  B 
    2. B返回(a+BB+BB+BB+BB+BB+BB+BB+BB+BB+BB+AA) =>A (状态1,无刷卡) 
        B返回(a+5个字节的压缩BCD码卡号 + 6个字节的十进制码扣款额(每个字节大小为0- 9之间的数,前5个字节为整数,后1个字节为小数)+ CRC。) >=A (状态2,有效刷卡)     
        B返回(无) =>A (状态3无返回,机器未连接,超时)3.  A接收后,在数据库中查询,处理后,分以下几种情况下发给B
        A => B(见指令2,刷卡有效,下传余额)
        A => B(见指令3,4,5,下传出错提示)
        转下一地址(到指令1)这是它的协,有没有用哟,比如说要传个命给消费机就座如何写。是不是要用到什么进制的转化哟