PDA

View Full Version : سوال: پورت سريال



noshin156
چهارشنبه 03 خرداد 1391, 13:55 عصر
سلام من يه برنامه نوشتم كه از يك پورت مقدار مي گيرد اين كد با كليك كردن روي يك دكمه كارمي كند حالامن اين كد رو بايد كجاي برنامه بنويسم كه اتوماتيك شروع به خواندن از پورت كند؟وشرط توقف اون رو چي بذارم؟:افسرده:

ASGGSA
چهارشنبه 03 خرداد 1391, 14:07 عصر
سلام.
از قطعه کد زیر استفاده کنید. دستور while تا زمانی که از برنامه خارج نشدید ادامه پیدا می کند و مشکلی هم برای پیغام ها بوجود نمی آورد. تابع مورد نظرتون را در else بنویسید.

MSG msg;
ZeroMemory(&msg, sizeof(MSG));
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
Function();
}
}

noshin156
چهارشنبه 03 خرداد 1391, 14:50 عصر
من مي خوام از يك thread functions استفاد كنم چند تا مقاله درباره ساختش ديدم ولي نميدونم چه جوري راخوانيش كنم!
http://forums.codeguru.com/showthread.php?t=312452

noshin156
جمعه 05 خرداد 1391, 15:09 عصر
كسي نبود جواب ما رو بده؟:گریه:

pe32_64
جمعه 05 خرداد 1391, 23:35 عصر
من مي خوام از يك thread functions استفاد كنم چند تا مقاله درباره ساختش ديدم ولي نميدونم چه جوري راخوانيش كنم!
http://forums.codeguru.com/showthread.php?t=312452

تو صفحه ی بالا که کامل بیان کرده؟!!!
مشکلتون کجاست؟

noshin156
شنبه 06 خرداد 1391, 09:50 صبح
نمي دونم چه جوري بايد ازش استفاده كنم؟؟؟؟

ASGGSA
شنبه 06 خرداد 1391, 14:53 عصر
ببینید اگه می خواهید اطلاعات رو از پورت سریال دریافت کنید راههای مختلفی دارد یکی از اون راهها را در بالا توضیح دادم که باید تابع خواندن را در else قرار بدهید. راه دیگر استفاده از تابع OnIdle است و نیاز به تعریف ترد ندارد باز می توانید تابع خواندن را در این تابع فراخوانی کنید. یک راه دیگر هم هست می توانید از تابع SetTimer و رخداد WM_TIMER استفاده کنید و تابع خود را آنجا فراخوانی کنید.

nimar1
یک شنبه 18 تیر 1391, 01:27 صبح
اصلا نگران نباشید شرکت ماکروسافت یک کنترل ساخته با ایکون تلفن به این اسم

Microsoft Communications Control, version 6.0 Properties

برو ازش استفاده کن منم دعا کن من با این با ای سی اتمگا ارتباط برقرار میکنم بدون هیچ گونه اروری
برو از

Registered ActiveX Controls
اینسرتش کون موفق باشی منم دعا کون

sadmo54321
یک شنبه 18 تیر 1391, 21:06 عصر
اصلا نگران نباشید شرکت ماکروسافت یک کنترل ساخته با ایکون تلفن به این اسم

Microsoft Communications Control, version 6.0 Properties

برو ازش استفاده کن منم دعا کن من با این با ای سی اتمگا ارتباط برقرار میکنم بدون هیچ گونه اروری
برو از

Registered ActiveX Controls

سلام مهندس:قلب:
بازم دستت درد نكنه.
آقا شما هم با ميكرو كار ميكنيد.:تشویق:
ميشه با جزئيات بيشتري توضيح بدين. البته اگه مثال و عكس هم باشه كه خيلي عالي ميشه.:چشمک::لبخند:

nimar1
چهارشنبه 21 تیر 1391, 22:43 عصر
واله بله با میکرو هم کار میکنم بیشتر با ای وی ار کار میکنم ببینید کاری نداره شما خیلی راحت بعداز نصب این که جوری تنظیم شده که سرعت انتقال و همه چیز از قبل تعریف شده و اگر با برنامه کدویژن کار بکنید اونم دقیقا همین تنظیم و میزاره حرف خواصی نیست جز اینکه باید با تابع به صورت کاراکتری بفرستی و به صورت کاراکتری بگیری زمانی رو هم براش میزاری بین گرفت و دریافت کردن و دیگه اینکه حتما بعداز ارسال به پورت سریال و دریافت توسط دستگاه از دستگاه همین کدی رو که دریافت میکنه دوباره بفرست به کامپیوتر تا چک کنه ببینه درست ارسال شده یا نه اگر نشد دوباره بفرسته چون ممکن با یک شوک برق یا اتصال و یا جوشکاری خونه همسایه بهم بریزه که اینم خودش علمیه نویز گرفتن بگذریم چشم من براتون نمونه میزارم

این کدهایی که در دستگاه برای دریافت از پرت سریال کامپیوتر نوشته میشه به همین سادگی
a=getchar();
delay_ms(1);


اینم کدیه که بعداز گذاشتن کنترل بالایی که گفتم میزارین و در اینجا کلمه اوکی را ارسال میکنه خیلی راحت بزارینش توی یک باتن هر وقت کلیدشو بزنید ارسال میکنه اوکی را موفق باشین
m_output="ok";
m_comm.SetOutput(COleVariant(m_output));//strOutput));
UpdateData(FALSE);

اینم تنظیماتش :
m_comm.SetCommPort(1);
m_comm.SetSettings("9600,N,8,1");
m_comm.SetInputLen(1);
m_comm.SetInputMode(0);
m_comm.SetRTSEnable(TRUE);
m_comm.SetRThreshold(1);
m_comm.SetPortOpen(true);


موفق باشین اصلا سخت نیست فقط باهاش بازی کنید

sadmo54321
جمعه 23 تیر 1391, 18:24 عصر
واله بله با میکرو هم کار میکنم بیشتر با ای وی ار کار میکنم ببینید کاری نداره شما خیلی راحت بعداز نصب این که جوری تنظیم شده که سرعت انتقال و همه چیز از قبل تعریف شده و اگر با برنامه کدویژن کار بکنید اونم دقیقا همین تنظیم و میزاره حرف خواصی نیست جز اینکه باید با تابع به صورت کاراکتری بفرستی و به صورت کاراکتری بگیری زمانی رو هم براش میزاری بین گرفت و دریافت کردن و دیگه اینکه حتما بعداز ارسال به پورت سریال و دریافت توسط دستگاه از دستگاه همین کدی رو که دریافت میکنه دوباره بفرست به کامپیوتر تا چک کنه ببینه درست ارسال شده یا نه اگر نشد دوباره بفرسته چون ممکن با یک شوک برق یا اتصال و یا جوشکاری خونه همسایه بهم بریزه که اینم خودش علمیه نویز گرفتن بگذریم چشم من براتون نمونه میزارم

این کدهایی که در دستگاه برای دریافت از پرت سریال کامپیوتر نوشته میشه به همین سادگی
a=getchar();
delay_ms(1);


اینم کدیه که بعداز گذاشتن کنترل بالایی که گفتم میزارین و در اینجا کلمه اوکی را ارسال میکنه خیلی راحت بزارینش توی یک باتن هر وقت کلیدشو بزنید ارسال میکنه اوکی را موفق باشین
m_output="ok";
m_comm.SetOutput(COleVariant(m_output));//strOutput));
UpdateData(FALSE);

اینم تنظیماتش :
m_comm.SetCommPort(1);
m_comm.SetSettings("9600,N,8,1");
m_comm.SetInputLen(1);
m_comm.SetInputMode(0);
m_comm.SetRTSEnable(TRUE);
m_comm.SetRThreshold(1);
m_comm.SetPortOpen(true);


موفق باشین اصلا سخت نیست فقط باهاش بازی کنید
سلام مهندس:قلب:
خيلي آقايي

noshin156
شنبه 31 تیر 1391, 12:34 عصر
سلام خيلي عالي بود ممنون
فقط يه سوال ديگه اگر بخوام از پورت USB استفاده كنم بايد از همين روش استفاده كنم
اگر لطف كنيد نمونه برنامه اي بگذاريد ممنون ميشم من با mfc كار ميكنم