电子秤型号为XK3190-A12+E

解决方案 »

  1.   

    最直接的方法是找厂家要说明书之类的东西
    如果是自己摸索就
    1、先看看称有没有接口能往外输出数据
    2、如果是db9的就拿个串口线插电脑上试试,找个串口调试工具,随便设置个波特率打开串口看看上数不,如果不上数换根线(串口线分直通、交叉)
    称的话数据一般比较简单,ASCII接收模式就能看出真实值,如果是乱码就尝试换波特率
      

  2.   

    一般是先找销售商,销售商可以联系到厂家,厂家会提供各种编程语言的demo
    要知道很多硬件设备都有自己的操作语言,需要用我们的编程语言去调用这些语言,提交给硬件执行
    因此,也许有很多层,例如最底层的dll是用C++写的,C#可以调用这个dll,都有例子
      

  3.   

    跟什么232 485没关系..都是串口通讯.. 得到byte[]自己解析就行了. 具体协议请参考官方文档
      

  4.   

    我前两天刚搞完电子秤,跟你讲下流程吧兄弟,也是给自己一个总结
    1.先跟销售方要DEMO,没DEMO就要通信协议
    2.都是串口通讯,C#有完整的串口工具类库,请查阅serialport类
    3.通信协议搞到手之后,剩下的就是写程序咯,。也很简单的,无非就是 联机--发送数据--接收数据--关机--处理数据-呈现这几步。
    4.另外说一下,一半这些单片机通讯都是串口,设置好波特率、COM口、数据位、奇偶验证之后连接就OK
    5.体重秤那边接的是ASCII码,C#这一端写16进制数据,具体什么指令,就转换成什么16进制数字,这个有专门ASCII转16进制的工具,直接转换就行
    6.串口的datareceived 方法运行在辅线程,优先级很低、需要你锁住线程,直到线程执行完毕,否则会出现许多奇奇怪怪的问题,如果是winform的话需要你调委托去异步访问控件,直接访问会报错。其他的前端我就不知道了,毕竟只写过java的网页。大概就这么多。
      

  5.   

    看API接口文档,应该不难
      

  6.   


    我是用的VS 2008,C#写的,因为要用在WinCE平板电脑上。
    1、按下图中进行设置。
    2、“读取”按钮代码:
    private void btnFRPTWeight_Click(object sender, EventArgs e)
    {
        if (txtBarcodeFRPT.Text.Trim() == "")
        {
            lblStateFRPT.ForeColor = Color.Red;
            lblStateFRPT.Text = "2 请先刷厂内条码!!!!";
            ShowError("请先刷厂内条码!!!!");        txtBarcodeFRPT.Text = "";
            txtBarcodeFRPT.Focus();
            return;
        }
        if (serialPort1.IsOpen)
            serialPort1.Close();
        serialPort1.Open();
        serialPort1.WriteLine("R");    txtCommandFRPT.Focus();
        txtCommandFRPT.SelectAll();
    }
    3、串口接收数据代码:
    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        try
        {
            System.Threading.Thread.Sleep(500);
            int bytesCanRead =this.serialPort1.BytesToRead;
            if (bytesCanRead > 0)
            {
                byte[] bzData = new byte[bytesCanRead];
                this.serialPort1.Read(bzData, 0, bytesCanRead);
                string s = Encoding.ASCII.GetString(bzData, 0, bytesCanRead);
                string s1 = "";
                for (int i = 0; i < s.Length; i++)
                {
                    if ((s.Substring(i, 1) == "0") ||
                        (s.Substring(i, 1) == "1") ||
                        (s.Substring(i, 1) == "2") ||
                        (s.Substring(i, 1) == "3") ||
                        (s.Substring(i, 1) == "4") ||
                        (s.Substring(i, 1) == "5") ||
                        (s.Substring(i, 1) == "6") ||
                        (s.Substring(i, 1) == "7") ||
                        (s.Substring(i, 1) == "8") ||
                        (s.Substring(i, 1) == "9") ||
                        (s.Substring(i, 1) == ".") )
                    {
                        s1 += s.Substring(i, 1);
                    }
                }
                s = s1;
                if (s.Trim() != "")
                {
                    serialPort1.Close();
                    this.Invoke((EventHandler)delegate
                    {
                        //s就是最终收到的数据。在这里对s进行处理。
                    });
                }
                else
                {
                    serialPort1.Close();
                    serialPort1.Open();
                }
                
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }