последовательный порт для неизвестного устройства - PullRequest
0 голосов
/ 01 января 2011

У меня есть акцептор монетоприемника, и я хочу подключить этот автомат, используя последовательный порт.Моя главная проблема в том, что я пробовал почти все настройки для подключения этой машины.Номера выводов написаны на кабеле как 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, когда я кладу монетуКак я могу поймать это значение?

1 Ответ

0 голосов
/ 09 января 2011

После нескольких дней работы я выяснил, как подключить устройство для приема / проверки монет к ПК через последовательный порт, используя VB6, чтобы каждая монета, вставленная в слот, вызывала сигнал, который будет пойман ПК..

...