PDA

View Full Version : ساختن چندین پورت به طور داینامیک و خواندن از پورتها



minaalamshahi
چهارشنبه 25 بهمن 1391, 09:53 صبح
سلام

من با دستور زیر پورت داینامیک می سازم


ds = obj.select_PortAll(out except);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{ _serialPort = new SerialPort(ds.Tables[0].Rows[i][1].ToString(), 9600, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.WriteTimeout = 500;
_serialPort.Open();


حالا می خوام وقتی اطلاعاتی از پورتم اومد بخونم


void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) {
_serialPort.PortName = ((System.IO.Ports.SerialPort)(sender)).PortName;
if (!_serialPort.IsOpen)
{
_serialPort.DtrEnable = true;
try
{
روی این خط بهم میگهaccess is deneid
و پورت رو باز نمیکنه
_serialPort.Open();
}
catch (Exception E)
{
_serialPort.Close();
}
}
string data = _serialPort.ReadExisting()

minaalamshahi
چهارشنبه 25 بهمن 1391, 11:31 صبح
جوابش رو پیدا کردم


ds = obj.select_PortAll(out except);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
_serialPort = new SerialPort(ds.Tables[0].Rows[i][1].ToString(), 9600, Parity.None, 8, StopBits.One);

_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.WriteTimeout = 500;
if (!_serialPort.IsOpen)
{ // COM.ReadTimeout = 500;
_serialPort.DtrEnable = true; try
{ _serialPort.Open(); } catch (Exception E) { _serialPort.Close(); } } }


void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender;sp.ReadExisting()
{

minaalamshahi
چهارشنبه 25 بهمن 1391, 13:57 عصر
روی همزمانی مشکل داره

کسی نمی دونه باید چیکار کنیم؟

Esmail Solhkhah
چهارشنبه 25 بهمن 1391, 20:35 عصر
بسته به اینکه اون کانت شما چند باشه ، یکی از پورتهای سریالی رو استفاده میکنید که قبلا باز شده و مورد استفاده پروسس دیگه ای هست
پورت سریال Single Use هست.

موفق باشید.