|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
[c#] comunicazione porta seriale come fare?
Dopo aver trovato il modo di far comunicare cellulare e pc via bluetooth (cioè per lo meno quando invio dei bytes dal pc al cell il cell si illumina quindi penso li riceva
ora vorrei creare un applicazione per leggerle questi bytes come posso fare per leggereli? ho creato una piccola applicazione che fa un serialport1.Read(arraydibytes,0,10); ma quando la faccio girare va in errore... cosa devo fare? grazie!!! Ultima modifica di nikel : 25-02-2010 alle 19:29. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
un pò di codice.. questa è l'applicazione lato pc
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;
namespace SERIALE
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//configuring the serial port
serialPort1.PortName = "COM4";
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
//opening the serial port
serialPort1.Open();
//write data to serial port
serialPort1.Write("ABC");
//close the port
serialPort1.Close();
}
}
}
Quote:
Ultima modifica di nikel : 25-02-2010 alle 21:47. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
e questo è l'applicazione lato cell...
Codice:
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace SERIALEWM
{
public partial class Form1 : Form
{
byte[] bytes = new byte[3];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//configuring the serial port
serialPort1.PortName = "COM6";
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
serialPort1.ReadTimeout = 1000;
serialPort1.WriteTimeout = 1000;
//opening the serial port
serialPort1.Open();
//write data to serial port
serialPort1.Read(bytes,0,3);
//close the port
serialPort1.Close();
label1.Text = bytes.ToString();
}
}
}
Ultima modifica di nikel : 25-02-2010 alle 21:50. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
sbaglio qualcosa?
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
up...
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
|
La comunicazione seriale è, come dice il termine, seriale, quindi non è detto che tu possa leggere i dati dal cellulare in qualsiasi momento.
Il giusto modo di accedere al flusso dei dati seriali è quello di collegarti all'evento che viene chiamato quando sulla com passano dei dati, così puoi leggere i byte presenti sulla com solo quando è certo che ci siano dei dati da leggere. Ultima modifica di flx2000 : 26-02-2010 alle 12:01. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
ottimo!!! qual è questo evento?? sognavo esattamente una cosa del genere
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
up...
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
|
Inserisci
Codice:
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); Quando scrivi "+=" l'intellisense dovrebbe dirti che puoi premere TAB per completare l'evento, e ti crea il metodo adatto a riceverne i dati. Chiaramente la parte Read() ecc. dovrai toglierla da dove sta adesso e metterla lì dentro. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:55.



















