PDA

View Full Version : سوال: دریافت اطلاعات از پورت سریال و استفاده از آن در سراسر برنامه



sajjad23
شنبه 19 بهمن 1392, 13:48 عصر
خب اول شرمنده اگه سوالم کمی گنگه (این راهیه که میخوام برم اگه راه بهتری به نظرتون میرسه لطفا کمک کنین .. بیشتر مشکلم قوی نبودن کامپیوتر هدف هست ..)
دستگاهی دارم که رشته ای از اطلاعات رو به صورت بی وقفه برای پورت سریال ارسال میکنه طول ارسال 25 هست باید این کارها رو انجا بدم
1- پورت رو بخونم و چک کنم 1- اگه باز بود و 2- دیتا می اومد به اندازه 49 بخونه
2- رشته ی 25 تایی رو استخراج کنم قسمتهای مختلفش رو روی دادههای استاتیک بریزم از هر داده دو تا داشته باشم که اگه یکی قفل بود روی بعدی بریزه و هر داده ای رو که خواست استفاده کنه قبلش قفل کنه ( دیتا رو دابل بافر کنه )
خب تا اینجا رو با رویداد datarecived انجام میدم
از این به بعد باید 1-تعدای لیبل روی نخ اصلی رو تغییر داد و2 -دیتا رو توی دیتا ست ذخیره و روی اون محاسبات انجام بشه
3- سه حالت به نظرم میرسه
الف) یه نخ جدید ایجاد کنم و با کمک تایمر هر یکچهارم ثانیه نخ اصلی رو قفل کنم و لیبلها رو تغییر بدم
ب)یه تایمر نخی ایجاد کنم که این کار رو بام انجام بده .
ج)توی همون رویدا دیتا رسیو نخ اصلی رو تغییر بدم ؟

دیگه اینکه چطوری دیتا رسیود رو هر یک چهارم ثانیه فراخوانی کنم ؟ خودش یک ایونته و هر موقع دیتا برسه اتفاق میافته
یا میشه هر یک چهارم ثانیه به پورت گوش داد اگه دیتا میاومد بافر کنه و نخ اصلی رو هم تغییر بده

مهران موسوی
شنبه 19 بهمن 1392, 15:31 عصر
دوست عزیز از مدل Signaling constructs در مدیریت نخ ها استفاده کن ، در این مدل میتونی در هنگام receive کردن دیتا ها با ارسال notification به نخ اون رو لاک کنی به شکلی که تا انتهای Data receiveing در حالت لاک باقی بمونه و پس از اتمام دریافت اطلاعات به کارش ادامه بده و خواسته شما رو برآورده کنه .

عبارات CountdownEvent و Barrier Class رو جستجو کن. اینها در FrameWork 4 دات نت برای مدل Signaling constructs معرفی شدن ....

mehroomahh
دوشنبه 06 مهر 1394, 19:55 عصر
سلام

میشه این چیزی رو که گفتین یکم بیشتر توضیح بدین ..

منم شدیدا گیر این موضوعم و دو سه روزه دنبالشم ولی چیزی پیدا نکردم .

اگه راه بهتری هم هست ، خیلی خیلی مشتاقم یاد بگیرم .

ی برنامه دارم که چند تا فرم ( حدود 11 ) داره و میخوام تو هر کدوم از این فرم ها ، بتونم از پورت سریال فقط دریافت داشته باشم و بتونم با اون کار کنم و میخوام تو کل برنامه پورت باز باشه و تو هر صفحه جدا بشه برای اطلاعات دریافتی ،برنامه ریخت . ....

(مثلا توی فرم 2 ، اطلاعات دریافتی از پورت سریال ، باید ی کار انجام بده و توی فرم سه ، ی کار دیگه )

بازم ممنون.

esagraphic
دوشنبه 06 مهر 1394, 21:10 عصر
سلام

میشه این چیزی رو که گفتین یکم بیشتر توضیح بدین ..

منم شدیدا گیر این موضوعم و دو سه روزه دنبالشم ولی چیزی پیدا نکردم .

اگه راه بهتری هم هست ، خیلی خیلی مشتاقم یاد بگیرم .

ی برنامه دارم که چند تا فرم ( حدود 11 ) داره و میخوام تو هر کدوم از این فرم ها ، بتونم از پورت سریال فقط دریافت داشته باشم و بتونم با اون کار کنم و میخوام تو کل برنامه پورت باز باشه و تو هر صفحه جدا بشه برای اطلاعات دریافتی ،برنامه ریخت . ....

(مثلا توی فرم 2 ، اطلاعات دریافتی از پورت سریال ، باید ی کار انجام بده و توی فرم سه ، ی کار دیگه )

بازم ممنون.

سلام دوستم ببین من همین الان دارم روی یک برنامه باسکول کار میکنم اونم اطلاعات را بی وقفه داره از پورت سریال میگیره و توی فرم اصلی من نمایش میده توی یک تکس باکس وزن را نمایش میده و میتونم تو هر فرمم اونو صدا بزنم و ازش استفاده کنم دقیقا منظور شما همینه یعنی مثلا پورت سریال یه مقدار وزن میفرسته به من 4500 کیلو من یه فرم دگه دارم که مشخصات ثبت میکنم و وزن را از فرم اولم میگیرم

mehroomahh
دوشنبه 06 مهر 1394, 21:42 عصر
آره دقیقا اینو بتونین بهم یاد بدین ک چطور میشه بی وقفه پورت رو چک کرد و اطلاعات ازش گرفت و تو بقیه فرم ها ازش استفاده‌کرد شدیدا ممنوووووون دارت میشم.
میتونم ی main فورم هم داشته باشم و مثله پروژه شما عمل کنم.
ببین پروژه من ی چیزیه شبیه به atm بانکا که کلید های سخت افزاری کنار مانیتور هست و با اونا میشه نرم افزار رو کنترل کرد.
میخوام با پورت سریال این کارو بکنم.
کلید ها به میکرو وصلند و میکرو ب پورت سریال وصله و برای هر کلید مشخص کردم ی کارکتر با ویژگی منحصر ب فرد برای سریال میفرسه و
میمونه اینکه با این اطلاعاتی که از پورت تو سی شارپ میگیرم ، بتونم توی نرم افزار کار کنم....

پروژه رو براتون توضیح دادم که ذهنتون نزدیک تر بشه ب موضوع...

الان درگیرشم شدید...

ممنون ک جواب دادین.
منتظر پاسختون هستم.

esagraphic
دوشنبه 06 مهر 1394, 22:18 عصر
ببین من تنها با چند روش اطلاعات را میخونم و بعد طبق نیازم روش پردازش میکنم و اطلاعات که از از پورت دریافت میکنم میریزم توی یه تکس باکس و حالت تکس باکس رو public کردم بعد تو هر کجا بخواهی میتونی محتوای توی تکس باکس را بخونی حالا دقیقا مشکل شما کجاست اطلاعات را نمیتونی بخونی یا اطلاعات را میتونی بخوانی نمیتونی تو بقیقه فرم ها از اون استفاده کنی و یه سوال دگه اطلاعات که بی وقفه از پورت سریال میاد کدامش مورد نیازته

mehroomahh
دوشنبه 06 مهر 1394, 22:29 عصر
اطلاعات رو میتونم بخونم و تو فرم اصلیم هم میتونم اونو توی ی تکس باکس حتی نمایش بدم ولی تو بقیه فرم ها نمیتونم ازش استفاده کنم.!

ببین همیشه از پورت سریال من اطلاعات نمیاد ، تا ی کلید فشرده شد ، ی کارکتر مشخص ، ویژه همون کلید ارسال میشه و باید بتونم ازش استفاده کنم.

esagraphic
دوشنبه 06 مهر 1394, 22:44 عصر
ببین روی توی properties تکس باکس گزینه modifires را بیار روی public بعد توی هر فرمی که داری
مثلا توی فرم دوم یه تکس باکس دگه بساز مثلاً است Textbox1 و توی فرم اصلی خود هم که یه تکس باکس داری اسم اونم حالا فرض کنیم است Texbox
حالا تو فرم دوم
هرجا که خواستی صدا بزنی این شکلی یا توی یه string بریز یا توی تکس باکس خود من توی یه String ریختم ببین



Form1 frm = Application.OpenForms["Form1"] as Form1;
string essa = frm.textBox2.Text;

در کد بالا متوجه شده باشی از فرم اولم که فرم اصلی است یه تکس باکس داشتم تکس باکس 2 اونو public کردم و اینجا همه محتویات داخلش را خوندم هرچی توش باشه میاره اینجا خدا کنه بتونسته باشم مشکلت را حل کنم

mehroomahh
سه شنبه 07 مهر 1394, 09:44 صبح
سلام

ممنووووونم

الان فقط اینجاش مشکل دارم که اگه مقدار تکس باکس 2 تغییر کرد (تکس باکس اصلی ) ، تکس باکس ها یا متغیر ها ، تو بقیه صفحات تغییر نمیکنن !
میخوام هر لحظه اگه تغییری شد ، بقیه متغیر ها هم عوض بشن .