Descripción del problema: El puerto serie se usa para leer y escribir cuando se realiza el proyecto, y los datos del escáner de código se muestran en la interfaz. Aunque es muy simple, para mí que estoy programando Gupi, todavía lo grabo para facilitar el aprendizaje futuro. . .
clase pública
{
SerialPort estático público serialPort = null;
delegado público void showScanerTrayNumEventHandler ();
evento estático público showScanerTrayNumEventHandler showScanerTrayNum;
public void StartScanerWork ()
{ serialPort = new SerialPort ();
serialPort.PortName = globModelData.configmodelData.ScanerPortParam.PortName;
serialPort.BaudRate = Convert.ToInt32 (globModelData.configmodelData.ScanerPortParam.BaudRate);
serialPort.Parity = Parity.None;
serialPort.DataBits = Convert.ToInt32 (globModelData.configmodelData.ScanerPortParam.DataBits);
serialPort.StopBits = StopBits.One;
serialPort.ReadTimeout = 3000; // 单位 毫秒
serialPort.WriteTimeout = 3000; // 单位 毫秒
// Establecer el valor del búfer de recepción del byte del puerto serie, generalmente 1
// Después de recibir, desencadenar el procesamiento de eventos
serialPort.ReceivedBytesThreshold = 1;
serialPort.DataReceived + = new SerialDataReceivedEventHandler (ShowScanerResult);
intente
{ serialPort.Open (); //Console.WriteLine (serialPort.IsOpen.ToString ());
}
catch (Exception ex)
{ MessageBox.Show ("No se pudo abrir el puerto serie" + ex.ToString ()); System.Environment.Salir (0); // Salir de la aplicación }
}
public void ShowScanerResult (Object sender, SerialDataReceivedEventArgs e)
{ Thread.Sleep (50); int len = serialPort.BytesToRead; Byte [] readBuffer = new Byte [len]; serialPort.Read (readBuffer, 0, len); / / will Data leer en la caché //Thread.Sleep(1000); // Procesar los datos en readBuffer, personalizar el proceso globModelData.trayNum = System.Text.Encoding.Default.GetString (readBuffer); Console.WriteLine (globModelData. trayNum); if (showScanerTrayNum! = null) {
// Activar evento
showScanerTrayNum ();
}
}
}