private const float SeriesBase = 1111111.111111F; // Base of values to return: SeriesBase * (0..SeriesLength-1) // ------------------ M A I N ---------------------- // Setup function public void Setup() { // Create Serial Port object _serialTransport = new SerialTransport { CurrentSerialSettings = { PortName = "COM15", BaudRate = 115200 } // object initializer }; // Initialize the command messenger with the Serial Port transport layer // Set if it is communicating with a 16- or 32-bit Arduino board _cmdMessenger = new CmdMessenger(_serialTransport, BoardType.Bit16); // Attach the callbacks to the Command Messenger AttachCommandCallBacks(); // Start listening _cmdMessenger.Connect(); _receivedItemsCount = 0; _receivedBytesCount = 0; // Clear queues _cmdMessenger.ClearReceiveQueue(); _cmdMessenger.ClearSendQueue(); Thread.Sleep(100); // Send command requesting a series of 100 float values send in plain text form var commandPlainText = new SendCommand((int)Command.RequestPlainTextFloatSeries); commandPlainText.AddArgument((UInt16)SeriesLength); commandPlainText.AddArgument((float)SeriesBase); // Send command _cmdMessenger.SendCommand(commandPlainText); // Now wait until all values have arrived while (!_receivePlainTextFloatSeriesFinished) { Thread.Sleep(100); } // Clear queues _cmdMessenger.ClearReceiveQueue(); _cmdMessenger.ClearSendQueue(); _receivedItemsCount = 0; _receivedBytesCount = 0; // Send command requesting a series of 100 float values send in binary form var commandBinary = new SendCommand((int)Command.RequestBinaryFloatSeries); commandBinary.AddBinArgument((UInt16)SeriesLength); commandBinary.AddBinArgument((float)SeriesBase); // Send command _cmdMessenger.SendCommand(commandBinary); // Now wait until all values have arrived while (!_receiveBinaryFloatSeriesFinished) { Thread.Sleep(100); } }
/// <summary>连接串口</summary> public void Connect() { var name = cbName.SelectedItem + ""; if (String.IsNullOrEmpty(name)) { "请选择串口".SpeechTip(); MessageBox.Show("请选择串口!", Text); cbName.Focus(); return; } var p = name.IndexOf("("); if (p > 0) { name = name.Substring(0, p); } SaveInfo(); var cfg = SerialPortConfig.Current; var pt = Port; if (pt != null) { // 如果上次没有关闭,则关闭 try { pt.Close(); } catch { pt = null; } } if (pt == null) { pt = new SerialTransport(); } pt.PortName = name; pt.BaudRate = cfg.BaudRate; pt.Parity = cfg.Parity; pt.DataBits = cfg.DataBits; pt.StopBits = cfg.StopBits; //pt.Open(); pt.Disconnected += Port_Disconnected; pt.Received += OnReceived; pt.Open(); //pt.EnsureCreate(); Port = pt; var sp = pt.Serial; // 这几个需要打开端口以后才能设置 try { if (sp.DtrEnable != miDTR.Checked) { sp.DtrEnable = miDTR.Checked; } if (sp.RtsEnable != miRTS.Checked) { sp.RtsEnable = miRTS.Checked; } if (sp.BreakState != miBreak.Checked) { sp.BreakState = miBreak.Checked; } } catch { } Enabled = false; }