C# porta seriale COM

martedì 17 maggio 2011 - 14.16

marks886 Profilo | Newbie

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

Brainkiller Profilo | Guru

>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.

Ciao,
ho esperienza in questo tipo di cosa. La prima cosa che ti chiedo è, siamo sicuri che la bilancia è attivata per esportare sulla seriale i dati ? A volte ci sono degli switch da attivare se no di default non esce niente.

Hai provato a collegarti sulla porta con un terminale tipo Putty, e verificare come prima cosa se escono dati ?

Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

marks886 Profilo | Newbie

La bilancia manda una stringa di testo (ho già configurato tutto sul terminale) solo che non riesco a leggere.
Il codice che ho fatto è giusto?

Brainkiller Profilo | Guru

>La bilancia manda una stringa di testo (ho già configurato tutto
>sul terminale) solo che non riesco a leggere.
>Il codice che ho fatto è giusto?

Rispondi prima a ciò che ti ho chiesto.
Tu hai configurato tutto, ma sei sicuro che arrivano i dati ?
Se non sei sicuro conviene verificare.
I punti critici sono diversi:

1) Hai attivato l'invio sulla bilancia, sei sicuro che l'hai attivato correttamente ?
2) L'hai attivato ma c'è qualcos'altro da attivare che ignori
3) il cavo funziona
4) il codice è scritto correttamente

Io vorrei verificare i punti 1) e 2) prima poi il 3) e infine al 4)

Se noi ci concentriamo sul 4) ma in realtà il problema è prima perdi un sacco di tempo per niente (come già mi è successo)

Scarica il software Putty e collegati alla COM della bilancia. Se vedi che arivano i dati poi passiamo al punto 4)

Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

marks886 Profilo | Newbie

ho risolto, adesso funziona.
ho messo semplicemente nel codice serialPort.ReadLine() e mi ritorna il risultato giusto.
Cmq grazie di tutto non sapevo che con putty si poteva leggere dalle porte com

Grazie e scusa il disturbo

ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5