PDA

View Full Version : خواندن اطلاعات از پورت com



ssmehizadeh
یک شنبه 25 مرداد 1388, 12:21 عصر
سلام
چطور میشه اطلاعات موجود در پورت com روخوند

ali.akhbary
یک شنبه 25 مرداد 1388, 12:45 عصر
فضای نام:

using System.IO.Ports;
مقدار دهی به پورت

comPort.BaudRate = 9600;
comPort.Parity = Parity.None;
comPort.RtsEnable = true;
comPort.StopBits = StopBits.One;
comPort.DataBits = 8;
comPort.ReadBufferSize = 1000;
comPort.ReadTimeout = 1000;
comPort.WriteBufferSize = 1000;
comPort.WriteTimeout = 1000;
comPort.PortName = "COM4";
comPort.ReceivedBytesThreshold = 1;
در هنگام نام دهی پورت دقت کنید که موجود باشد.



باز کردن پورت:

if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
خواندن از پورت

comPort.ReadLine()

ssmehizadeh
سه شنبه 27 مرداد 1388, 17:49 عصر
ممنون از جوابتون
ولی این comport باید از چه نوعی تعریف کنم
از نوع serialport که داره ایراد می گیره

kiosksoft
سه شنبه 27 مرداد 1388, 19:37 عصر
دوست عزیز

این تاپیک کمک بگیرید (نمونه برنامه) - پست 5

http://www.barnamenevis.org/forum/showthread.php?t=158980


پست 7 - نمونه برنامه
http://www.barnamenevis.org/forum/showthread.php?t=150379

ssmehizadeh
سه شنبه 27 مرداد 1388, 21:00 عصر
نمیدونم مشکل از کجاست ....
برنامه خطا نداره ولی جواب نمیده

توضیح در مورد مشکل

ما یه reader کارت pvc داریم که به پورت serial وصل میشه من فقط می خوام شماره کارتها رو بخوانم
ممنون راهنمایی کنید .

ali.akhbary
چهارشنبه 28 مرداد 1388, 09:56 صبح
ممنون از جوابتون
ولی این comport باید از چه نوعی تعریف کنم
از نوع serialport که داره ایراد می گیره


using system.io.port;

ssmehizadeh
چهارشنبه 28 مرداد 1388, 18:53 عصر
از همین خط اول داره ایراد می گیره : comPort.BaudRate = 9600;

پیغام خطا رو ضمیمه کردم

ssmehizadeh
پنج شنبه 29 مرداد 1388, 10:06 صبح
اصلا کاملا دارم گیج میزنم
مشکل قبلی عیب از خودم بود ........ پیش میاد دیگه

ولی حالا یه مشکل جدید از خط textBox1.Text = comPort.ReadLine();

تصویرش ضمیمه می کنم ...... ممنون راهنمایی کنید

ssmehizadeh
پنج شنبه 29 مرداد 1388, 10:22 صبح
کد رو بصورت زیر تغییر دادم داره پیغام خطا نمی ده ولی چیزی هم نشون نمیده

البته اینم بگم از طریق hyper terminal وقتی دارم روی com1 تنظیم می کنم کارتهای PVC رو داره می خونه

به نظر شما عیب از چیه ؟؟؟؟؟؟؟


if (!comPort.IsOpen)
comPort.Open();
int bytes = comPort.BytesToRead;
byte[] comBuffer = new byte[bytes];
comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
comPort.Read(comBuffer, 0, bytes);
string str;
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
str = enc.GetString(comBuffer);
textBox1.Text = str;
comPort.Close();

ali.akhbary
جمعه 30 مرداد 1388, 11:18 صبح
از همین خط اول داره ایراد می گیره : comPort.BaudRate = 9600;

پیغام خطا رو ضمیمه کردم

پورت رو new نکردی!

ali.akhbary
جمعه 30 مرداد 1388, 11:23 صبح
ولی حالا یه مشکل جدید از خط textBox1.Text = comPort.ReadLine();


طرف کامپیوتری که این برنامه توش داره کار می کنه مشکلی نیست. چون از پورت کام چیزی دریافت نمی کنه و timeout میشه.

می تونی اون رو توی try catch بذاری.

ببین چرا از اون طرف چیزی نمیاد.

در ضمن می تونی مقدار زمان time out رو مشخص کنی.

ali.akhbary
جمعه 30 مرداد 1388, 11:38 صبح
if (!comPort.IsOpen)
comPort.Open();
int bytes = comPort.BytesToRead;
byte[] comBuffer = new byte[bytes];
تا اینجا حرفی نیست.
تعداد بایتهایی رو که توی بافر هستند پیدا کردی.



comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
بعدش میای حافظه پورت کام رو پاک می کنی؟؟؟؟؟!!!!!!!!!!!!!!!!

بهتره که این دو خط رو به بالا منتقل کنی.

HAMRAHSOFT.IR
یک شنبه 12 خرداد 1392, 13:58 عصر
نمونه برنامه نیستبرای این منظور
منمخوام اطلاعت ارسالی توسط پورت کام دستگاه ساتنرال بخونم

راهکارش چی
کسی متون کمک کنه

hamid_hr
یک شنبه 12 خرداد 1392, 14:48 عصر
مدل سانترالت چيه؟

HAMRAHSOFT.IR
یک شنبه 12 خرداد 1392, 23:49 عصر
پانوسنیک 824

hamid_hr
دوشنبه 13 خرداد 1392, 08:50 صبح
خب اگه منظورت همون tes824 هست كه اول بايد يك كابل سريال با توجه به نقشه كه كاتالوگ هست درست كني
اينم كداش


Dim RS232 As New SerialPort
Dim readThread As Thread = New Thread(AddressOf ReadFromCom)
Dim abortThread As Boolean

RS232 = srpCOM16
With RS232
.PortName = "COM16"
.BaudRate = 9600
.Parity = Parity.None
.DataBits = 8
.StopBits = 1
.ReadTimeout = 500
.DtrEnable = True
End With

RS232.Open()

Dim message As String = RS232.ReadLine



فقط با vb.net هستش به c# تبديل كن

HAMRAHSOFT.IR
دوشنبه 13 خرداد 1392, 13:05 عصر
امکان داره یک پروژ وبی برام بزارید