【问题标题】:serialport connection for unknown device未知设备的串口连接
【发布时间】:2011-06-02 06:13:50
【问题描述】:

我已经设置了投币机接收器,我想使用串口连接这台机器。我的主要问题是,我确实尝试了几乎所有设置来连接那台机器。引脚编号在电缆上写为第 3 和第 7。所以我试试

    private void Form1_Load(object sender, EventArgs e)
    {   
        // SerialPort paraPort defined at designer's generated code        
        paraport = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);


        //I wanna access to windows controls from the thread
        System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
    }


    private void button2_Click(object sender, EventArgs e)
    {
        //paraPort is the name of serialport class
        paraPort.ReadBufferSize = 1024;
        paraPort.WriteBufferSize = 1024;
        paraPort.ReadTimeout = 1000;
        paraPort.WriteTimeout = 1000;
        paraPort.NewLine = "\n";

        //Because 7th pin is for RTS which means request 2 send
        paraPort.Handshake = Handshake.RequestToSend;


        //Data Terminal Ready Enable
        paraPort.DtrEnable = true;
        paraPort.RtsEnable = true;
        paraPort.Open();

        //Then Thread check the procedure inside of try - catch block

     try{
        // Thread money defined at designer's generated code
        money = new Thread(new ThreadStart(CheckTheMachineState));
        money.Start();
     }catch(Exception e){
        MessageBox.Show("thread cannot be created"+e.Message);
     }

     }


        private void CheckTheMachineState()
        {
            richTextBox1.AppendText("Thread is running\n");


            //I wanna get the value of IOCTL_SERIAL_WAIT_ON_MASK
            //But I still don't know how

        }
    }

机器运转良好。但是当我使用 paraPort.ReadBufferSize 属性时,当硬币接受时它给我 0 :S。当我使用 paraPort.Read 方法时,它会引发超时异常:\

那么我可以为这些东西做些什么呢?我正在使用portmon工具来捕捉投币机信号。

当我投入硬币时,IOCTL_SERIAL_WAIT_ON_MASK 值更改为 SUCESS。我怎样才能捕捉到这个值?

【问题讨论】:

  • 您没有发布阅读代码。不可能猜到,除了你不是用ReadBufferSize()读取的,它不是一个方法。
  • 同上@Hans Passant 的评论,还有你的波特率在哪里,你确定它有 DTR 和 RTS 线路并且它们已连接?
  • @kenny 我像往常一样将 boundrate 设置为 9600(大多数文档都写这个值适用于大多数设备),我忘了写这些值,因为我使用 Visual Studio gui 来设置它们。我在那里设置了波特率。 DataBits 为 8,StopBits 为 1,Parity 为 None
  • @Hans 我不是说它的方法(你是对的,我编辑它),它是串行端口类的属性之一,但 getter 值给我一个零。
  • Hmya,我们已经弄清楚了。仍然没有代码执行实际阅读并且不起作用的迹象。投票结束。

标签: c# .net hardware serial-port


【解决方案1】:

经过几天的工作,我想出了如何使用VB6通过串口将硬币接收器/验证器连接到PC,这样每个插入插槽的硬币都会触发一个信号,该信号将被PC捕获.

【讨论】:

  • 我做到了。 serialPort.Dsrholding 给我钱的信号来了。我使用 RS232 Analyzer 来了解整机属性。
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多