public void PulseRtsLow() { if (serialPort == null && this.ActivePrinter != null) { serialPort = new FrostedSerialPort(this.ActivePrinter.ComPort); serialPort.BaudRate = this.BaudRate; if (PrinterCommunication.Instance.DtrEnableOnConnect) { serialPort.DtrEnable = true; } // Set the read/write timeouts serialPort.ReadTimeout = 500; serialPort.WriteTimeout = 500; serialPort.Open(); serialPort.RtsEnable = true; serialPort.RtsEnable = false; try { Thread.Sleep(1); } catch { } serialPort.RtsEnable = true; serialPort.Close(); } }
void AttemptToConnect(string serialPortName, int baudRate) { connectionFailureMessage = "Unknown Reason"; if (PrinterIsConnected) { throw new Exception("You can only connect when not currently connected."); } CommunicationState = CommunicationStates.AttemptingToConnect; bool serialPortIsAvailable = SerialPortIsAvailable(serialPortName); bool serialPortIsAlreadyOpen = SerialPortAlreadyOpen(serialPortName); if (serialPortIsAvailable && !serialPortIsAlreadyOpen) { serialPort = new FrostedSerialPort(serialPortName); serialPort.BaudRate = baudRate; //serialPort.Parity = Parity.None; //serialPort.DataBits = 8; //serialPort.StopBits = StopBits.One; //serialPort.Handshake = Handshake.None; if (PrinterCommunication.Instance.DtrEnableOnConnect) { serialPort.DtrEnable = true; } // Set the read/write timeouts serialPort.ReadTimeout = 500; serialPort.WriteTimeout = 500; if (CommunicationState == CommunicationStates.AttemptingToConnect) { try { serialPort.Open(); readFromPrinterThread = new Thread(ReadFromPrinter); readFromPrinterThread.Name = "Read From Printer"; readFromPrinterThread.IsBackground = true; readFromPrinterThread.Start(); // let's check if the printer will talk to us ReadPosition(); QueueLineToPrinter("M105"); QueueLineToPrinter("M115"); } catch (System.ArgumentOutOfRangeException) { connectionFailureMessage = "Unsupported Baud Rate"; OnConnectionFailed(null); } catch (Exception e) { OnConnectionFailed(null); } } } }