PDA

View Full Version : سوال: Output Char To SerialPort



MehdiElexal
دوشنبه 19 اردیبهشت 1390, 22:27 عصر
سلام به همه دوستان عزیزم
من با سریال پورت کار میکنم ،و باید داده ها را بصورت Char ارسال کنم ، اما سریال String هست
با VB6 یک سورسی بدست من رسیده به این صورت :

Serialport1.Output=chr(255)
همونطور که کاملا واضح هست کاراکتر 255 به سریال میره و شکلی مثل Y که دو تا نقطه بالاش هست میره به خروجی و سخت افزاری که به سریال وصل هست کار میکنه
چیزی که مهمه نباید این Y بصورت String بره باید Char باشه
حالا من کد زیر رو نوشتم Char هم فکر میکنم هست (قائدتا!!!) اما سخت افزار من که به سریال وصل هست عکس العملی نشون نمیده نسبت به این کد
ممنون میشم دوستان کمک کنن

serialPort1.Write(new char[] { (char)255}, 0, 1);
این هم در نظر داشته باشید که مشکلی تو Baudrate سریال و Parity و .... نیست !!!
مشکل اینه که من بتونم کاراکتر 255 رو به سریال به همون صورت کاراکتر ارسال کنم
ممنون از این که وقت گذاشتید و داستان ما رو خوندید :لبخند::قلب::قلب:

unknown.unforgiven
دوشنبه 19 اردیبهشت 1390, 23:18 عصر
سلام
من قبلاً این کار رو واسه کنترل پورت میکرو انجام دادم، با وجود اینکه از char استفاده نکردم (زمانی که کامپیوتر داشت به میکرو داده ارسال میکرد) ولی تو میکرو char دریافت میکردم. از این کد استفاده کرده بودم:
serialPort1.Write(ch.ToString());

MehdiElexal
دوشنبه 19 اردیبهشت 1390, 23:39 عصر
سلام
من قبلاً این کار رو واسه کنترل پورت میکرو انجام دادم، با وجود اینکه از char استفاده نکردم (زمانی که کامپیوتر داشت به میکرو داده ارسال میکرد) ولی تو میکرو char دریافت میکردم. از این کد استفاده کرده بودم:
serialPort1.Write(ch.ToString());
ممنون اما وقتی .ToString میخوره دیگه Char نمی ره String میره
منهم دارم با میکرو کار میکنم ، اما برنامه سخت افزاریش رو قبلا کس دیگه ای نوشته و الان هم سورسش نیست که من تغییر بدم بگم String بخون ، طرف گفته Char بخونه
الانم من تست زدم این کد String میفرسته
بازم ممنون

unknown.unforgiven
دوشنبه 19 اردیبهشت 1390, 23:47 عصر
یه نکته دیگه اینکه برنامه ای که واسه میکرو نوشته بودم string نمیگرفت، char میگرفت و با این کد کار کرد. یه امتحانی بکنش، شاید کارت رو راه بندازه

MehdiElexal
دوشنبه 19 اردیبهشت 1390, 23:56 عصر
داداشی امتحان کردم کار نمیکنه Stringe 256 همون 256 اما Char 256 میشه Y
خیلی فرق دارن ، نمیدونم برنامه سخت افزاری شما به چه صورت بوده ، اما من باز کدی که گفتید رو تست کردم اما نشد
حتی تو vb6 هم نوشته chr(256) که اگه بزنی str(256) کار نمیکنه
حتما حتما باید Char باشه :ناراحت:

MehdiElexal
سه شنبه 20 اردیبهشت 1390, 01:23 صبح
دوستان عزیزی که کار کردن لطفا کمک کنن
ممنون

unknown.unforgiven
سه شنبه 20 اردیبهشت 1390, 18:30 عصر
:متفکر::گیج: من قاطی کردم! کد اسکی Y میشه 89. کد اسکی (http://www.asciitable.com/index/asciifull.gif) همیشه بین 0 تا 255 هستش. منظور من از اینکه رشته ارسال بکنی این بود که کاراکتر رو به رشته تبدیل بکنی و بفرستی، مثلاً اگه بخوای 65 رو بفرستی اول تبدیلش میکنی به کاراکتر (که میشه A)، بعد کاراکتر A رو تبدیل به رشته بکن و بفرست نه اینکه از همون اول 65 رو تبدیل به رشته بکنی و بفرستی. کدی که من تو کامپیوتر استفاده کردم این بود: (8 تا checkbox واسه وضعیت روشن یا خاموش بودن 8 تا خروجی پورت رو فرم گذاشته بودم و رویداد checkedChanged همه رو متد زیر قرار داده بودم)
private void checkedChanged(object sender, EventArgs e)
{
string y = "";
if (checkBox1.Checked)
y += "1";
else
y += "0";
if (checkBox2.Checked)
y += "1";
else
y += "0";
if (checkBox3.Checked)
y += "1";
else
y += "0";
if (checkBox4.Checked)
y += "1";
else
y += "0";
if (checkBox5.Checked)
y += "1";
else
y += "0";
if (checkBox6.Checked)
y += "1";
else
y += "0";
if (checkBox7.Checked)
y += "1";
else
y += "0";
if (checkBox8.Checked)
y += "1";
else
y += "0";
if (!serialPort1.IsOpen)
serialPort1.Open();
char ch = Convert.ToChar(Convert.ToInt16(y, 2));
serialPort1.Write(ch.ToString());
}

MehdiElexal
چهارشنبه 21 اردیبهشت 1390, 00:22 صبح
آخ ببخشید منظورم از 256 همون 255 :قهقهه: دیگه ببخشید !!! من خیلی خسته بودم و عصبی
ببین دوست عزیز این کاری هم که گفتی من کردم انگار سخت افزارش یه هوش مصنوعی داره که گریه منو در آورده من حتی دست به دامن مطلب Matlab شدم باهاش Char میفرستم Char واقعی
دیگه مطلب که شوخی نداره !!!
من نمیدونم چرا این جوریه فقط با vb6 کار میکنه کافی قبل هر کد مثلا 64 بزنی chr(64) مثل ساعت کار میکنه اما با هرچی دیگه میفرستی نمیشه :گریه:
با Matlab با C# دیگه موندم چی کار کنم به خدا گریم در اومده انگار char ویبی 6 یه char خاصیه نمیدونم چی کارش کنم ، نمیخوام کامپوننت بسازم ، اما دارم مجبورمیشم ، خواهشا اگه کسی راهی بلده بگه
یه جوریه که انگار نوع متغییر کاراکتر ورودی رو چک میکنه حتما باید مثلا Y از نوع Char باشه نه از نوع String
Please Help me:ناراحت:

MehdiElexal
چهارشنبه 21 اردیبهشت 1390, 16:21 عصر
هیچکی نیست که با سریال پرت کار کرده باشه ؟؟؟؟؟؟؟؟ :ناراحت:

mc_avr
چهارشنبه 21 اردیبهشت 1390, 17:02 عصر
سلام دوست من این کد رو امتحان کن
امیدوارم که جواب بگیری
میدونم که تو میکرو داری char میگیری
ولی در واقع چیزی که میکرو میگیره همون بایت هست که بعد تبدیل میکنه به char

byte[] by = new byte[1];
by[0] = 255;
serialPort1.Write(by, 0, 1);

MehdiElexal
پنج شنبه 22 اردیبهشت 1390, 20:10 عصر
پسر عالی بود مرسیییی ترکوندی :قلب::قلب::قلب::قلب::قلب: