Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    c# porta seriale COM

    ciao a tutti,
    ho un problema con la porta seriale in c#.
    In pratica ho creato il codice per leggere in continuo dalla porta seriale una serie di caratteri (provenienti da una bilancia elettronica) solo che mi ritorna sempre un valore vuoto.

    Questo è il codice:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.Threading;


    namespace bilancia
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    Thread threadDoorOpener;
    SerialPort serialPort = new SerialPort();
    private void Form1_Load(object sender, EventArgs e)
    {
    Thread.Sleep(1000);
    string[] ports = SerialPort.GetPortNames();
    serialPort.PortName = "COM4";
    serialPort.BaudRate = 9600;
    serialPort.DataBits = 8;
    serialPort.StopBits = StopBits.One;
    serialPort.Parity = Parity.None;
    if (serialPort.IsOpen) serialPort.Close();
    threadDoorOpener = new Thread((new ThreadStart(this.DoorOpener)));
    threadDoorOpener.Name = "alfa";
    threadDoorOpener.Start();
    }

    public void DoorOpener()
    {
    while (true)
    {

    serialPort.Open();
    serialPort.DtrEnable = true;
    string data = "";
    while (serialPort.BytesToRead > 0)
    {
    data += Convert.ToChar(serialPort.ReadByte());
    }
    txt1.Text = data.ToString();
    Thread.Sleep(1000);
    serialPort.Close();
    }
    }
    }
    }


    la variabile data è sempre vuota. Riuscite a dirmi se il codice è giusto?

    Grazie a tutti

  2. #2
    Io un paio di settimane fa sono impazzito tre ore prima di capire che nel buffer della porta seriale c'erano dati da leggere, ma la richiesta della lunghezza dei dati nel buffer era zero.

    Prova con:
    while (1)
    {
    data += Convert.ToChar(serialPort.ReadByte());
    if serialPort.eof break;
    }

    o qualcosa del genere (non so come sia fatto quel serialport)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.