Avaxnet

نسخه کامل: درخواست کمک در برنامه نویسی
شما در حال مشاهده نسخه تکمیل نشده می باشید. مشاهده نسخه کامل با قالب بندی مناسب.
صفحه ها: 1 2
با سلام
دوستان عزیز برنامه نویس
من نیاز به کمک دارم در محیط visual basic
میخوام 8 تا کلید به عنوان 8 تا دستگاه طراحی بشه که با زدن هر کدوم یه منو روشن و خاموش شدن فعال بشه و وقتی کلید روشن رو روی هر کدوم از کلید ها ( دستگاه ها ) میزنیم به پورت سریال کامپیوتر RS232 در تماس باشه و اونجا رو فعال و عیر فعال کنه
ممنون میشم دوستانی که در این زمینه اطلاعات دارند کمک و راهنمایی کنند
من با این کامپایلر کار نمیکنم اما با توجه به اینکه  اصول کار یکی است ، بهتر است میگفتید در کدام قسمت کار مشکل دارید تا بهتر میشد توضیح داد
اما به شکل عمومی تنها موردی که  معمولا در دیفالت کامپایلر نصب نشده است ، ماژول پورتهای کامپیوتر است ( از جمله سریال )
البته در برنامه نویسی لوکال به این میگویند کامپوننت ، پس باید ابتدا کامپوننت  مروبطه را نصب و پیکر بندی ان را تنطیم کنید
بقیه کار بسیار راحت است ، در یکی از خواص اون کلید  میتونید روی onclick  یا onpress تعریف کنید که پس از کانکت شدن به پورت مربوطه فرمان شما را اجرا کند که این فرمان میتوانید از یک سیگنال ساده باشد تا پیچیده ترین کارهای ممکنی که میخواهید از خروجی برنامه بگیرید
این چیزهایی بود که به شکل کلی میتوانستم برایتان بنویسم

ممنون از راهنمایی
اجازه بدید بیشتر توضیح بدم
من میخوام با کامپیوتر و یک میکرو کنترلر 8051 روی روشن و خاموش شدن 8 وسیله برقی که توانایی کار با ولتاژ AC که همون برق شهری هست کنترل داشته باشم
که بتونم روشن یا خاموش کنم
برای این کار یک زبان نرم افزاری هم لازم هست در کامپیوتر که چون شنیدم کار با Visual Basic ساده تر هست خواستم بخش نرم افزاری رو با این برنامه بنویسم
طراحی شکل کلی رو انجام دادم اما مشکل در ارتباط با پورت سریال هست که چطوری مثلا وقتی کاربر روی کلید روشن شدن دستگاه شماره 1 میزنه بتونه اطلاعات رو روی پورت بریزه و به عبارتی پورت سریال 1 بشه و فعال
که بعد با یک شدن این پورت به میکرو کنترلر یک clock pulse  اعمال بشه و میکرو وارد کار بشه و ولتاژها رو هماهنگ کنه و دستور بده به دستگاه شماره 1  و اون دستگاه رو روشن کنه
همین که چطوری من پورت سریال رو فعال کنم و اینکه آیا میتونم در یک پورت سریال همزمان چند تا از دستگاههای خروجی رو روشن یا خاموش و یا همه رو انجام بدم یا نه یا اینکه باید تک تک اعمال بشه
یعنی میشه روی این پورت هر خط آدرسش که فکر میکنم اگه اشتباه نکنم 25 خط اطلاعات داره این پورت بتونم همه دستگاهها یا تعداد دلخواهی از این 8 تا روشن و خاموش کنم و اگه میشه چه طوری
ممنون میشم جناب زارع راهنمایی بفرمائید
اگه با نرم افزار یا زبان برنامه نویسی ( کامپایلر)  دیگه ای هم هست لطف میکنید راهنمایی کنید تا من با اون کار کنم
چون بخش نرم افزاری ملاک کار ما نیست
و فقط انتخابش برای راحتی و کمی گرافیکی بودن و شکیل شدن کار هست
این کار رو جستجو هایی که کردم میشه با نرم افزار hyper terminal ویندوز به راحتی انجام داد
اما ایراد کار اینه که اونجا باید دستور رو کاربر بنویسه که خروجی فعال بشه و فقط باید دونه دونه چک کنه و کار نه گرافیکی هست و نه شکیل
خواستم همین کار رو با یک کامپایلر انجام بدم که مرتب تر باشه
فقط ارتباط با این پورت رو نمیدونم چه طور باید برقرار کنم و چه طوری پورت رو فعال (1 ) و غیر فعال (0) کنم
ممنونم باز هم
این کامپوننت که فرمودید رو چه طوری و از کجا میتونم پیدا کنم ؟
راستی  visual studio 2008 نصب کردم

آریا جان ... بعد از مدتی سری به ما زدی... دلمون برات تنگ شده بود...

Aria نوشته شده توسط:که بعد با یک شدن این پورت به میکرو کنترلر یک clock pulse  اعمال بشه و میکرو وارد کار بشه و ولتاژها رو هماهنگ کنه و دستور بده به دستگاه شماره 1  و اون دستگاه رو روشن کنه
همین که چطوری من پورت سریال رو فعال کنم و اینکه آیا میتونم در یک پورت سریال همزمان چند تا از دستگاههای خروجی رو روشن یا خاموش و یا همه رو انجام بدم یا نه یا اینکه باید تک تک اعمال بشه
یعنی میشه روی این پورت هر خط آدرسش که فکر میکنم اگه اشتباه نکنم 25 خط اطلاعات داره این پورت بتونم همه دستگاهها یا تعداد دلخواهی از این 8 تا روشن و خاموش کنم و اگه میشه چه طوری

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

برای قسمت نرم افزاریش هم احتیاج به کامپوننت دیگه ای نداری، توی VB و C# این عمل مشترکه(هر کدوم رو خواستی انتخاب کن):

1-از منوی Toolbox یک کنترل SerialPort به فرم اضافه کن... بقیه ی کارها مثل دکمه ها و کدهاشون هم اگه لازم داشتی بگو تا برات بذارم...

2- خاصیت PortName اون رو برابر عبارت ("COM1"مثلا) قرار بده...

3- هنگام نوشتن یا خوندن با متد Open() اون پورت رو باز کن...

4- با متدهای Read() و Write() میتونی بصورت بایت بایت اطلاعات رو با یک آرایه به همه پین های پورت سریال ارسال کنی یا از روی اون بخونی...

اگه اطلاعات بیشتری خواستی بگو ... توضیحاتم را با فرض آشنایی شما با برنامه نویسی ویژوال نوشتم...

 در دلفی برای این کار کامپوننت های مختلفی  وجود دارد  که بسته به نوع کارتان باید ان را نصب و تنظیم کنی ، البته در سطح بالاتر میتوانید برای کارایی بهتر خودت هم کامپوننت را بنویسی و شخصی سازی کنی ولی ظاهرا طبق توضیحات دوست خوبمون در vb  به صورت دیفالت ارتباط با پورت در بیسیک خود کامپایلر پیش بینی شده که خود این کلی از مراحل کارت رو ساده میکنه و اصلا درگیر این موضوع نخواهی شد
توضیحات  مبسوط و کاملی در پست قبلی بود که بهره خوبی میتونی ازش ببری

داداش آریا اول بگم که این کار یعنی روشن و خاموش کردن دیود یا لامپ های نوری با AVR میکرو کنترولر خیلی راحت تره و بهتره بگم با VB اصلا فکر نکنم ممکن بشه...

ولی برای اینکه وقتی روی یکی کلیک می کنن object دیگه غیر فعال بشه باید از خاصیت visible اون استفاده کنی...

یعنی با مقادیر true or false مقدار دهی کنی...

ولی توصیه می کنم این کار رو با AVR انجام بدی چون خیلی سریعتر به جواب می رسی...

می تونم ساختار برنامه رو هم بگم اگه خواستی بگو عزیزم...

من هنوز واسه چیزایی که یادم دادی بهت مدیونم...0 0 0

(یه داداشی که بیشتر نداریم 0 0 0)

PPF نوشته شده توسط:

آریا جان ... بعد از مدتی سری به ما زدی... دلمون برات تنگ شده بود...

Aria نوشته شده توسط:که بعد با یک شدن این پورت به میکرو کنترلر یک clock pulse  اعمال بشه و میکرو وارد کار بشه و ولتاژها رو هماهنگ کنه و دستور بده به دستگاه شماره 1  و اون دستگاه رو روشن کنه
همین که چطوری من پورت سریال رو فعال کنم و اینکه آیا میتونم در یک پورت سریال همزمان چند تا از دستگاههای خروجی رو روشن یا خاموش و یا همه رو انجام بدم یا نه یا اینکه باید تک تک اعمال بشه
یعنی میشه روی این پورت هر خط آدرسش که فکر میکنم اگه اشتباه نکنم 25 خط اطلاعات داره این پورت بتونم همه دستگاهها یا تعداد دلخواهی از این 8 تا روشن و خاموش کنم و اگه میشه چه طوری

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

برای قسمت نرم افزاریش هم احتیاج به کامپوننت دیگه ای نداری، توی VB و C# این عمل مشترکه(هر کدوم رو خواستی انتخاب کن):

1-از منوی Toolbox یک کنترل SerialPort به فرم اضافه کن... بقیه ی کارها مثل دکمه ها و کدهاشون هم اگه لازم داشتی بگو تا برات بذارم...

2- خاصیت PortName اون رو برابر عبارت ("COM1"مثلا) قرار بده...

3- هنگام نوشتن یا خوندن با متد Open() اون پورت رو باز کن...

4- با متدهای Read() و Write() میتونی بصورت بایت بایت اطلاعات رو با یک آرایه به همه پین های پورت سریال ارسال کنی یا از روی اون بخونی...

اگه اطلاعات بیشتری خواستی بگو ... توضیحاتم را با فرض آشنایی شما با برنامه نویسی ویژوال نوشتم...


ممنون PPF جان
والا کم سعادتی از ماست که نمی تونیم خدمت برسیم
عرض کنم به حضورتون که
برای اینکه وقتی دیتا نباشه میکرو اون رو صفر منطقی فرض نکنه
میام سطوح 1 رو +5 ولت و 0 رو -5 ولت میزارم که وقتی دیتا نباشه فرض بر صفر منطقی نکنه
همین که چه طوری کلاک پالس رو از خود پورت سریال بگیرم یه کم مشکل ساز شده
راهی داره یا نه و چه طوری ؟
یعنی بهتر میشه اگه از خود پورت سریال کلاک پالس بگیره
و خوب اگه این طوری نمیشه همون حالت دیگه که از پورت سریال کلاک نگیریم
این رو چه طوری انجام بدم ؟
اضافه کنم هیچ آشنایی با ویژوال بیسیک ندارم و خوب ممنون میشم که اگه واضح تر و کامل تر راهنمایی کنی و کاملتر متوجه شم
اگه مثالی بتونی بزنی که یک پورت رو مثلا با فشردن کلید در کامپیوتر یک  منطقی و با دوباره زدن قطع بشه ممنون میشم
Admin نوشته شده توسط: در دلفی برای این کار کامپوننت های مختلفی  وجود دارد  که بسته به نوع کارتان باید ان را نصب و تنظیم کنی ، البته در سطح بالاتر میتوانید برای کارایی بهتر خودت هم کامپوننت را بنویسی و شخصی سازی کنی ولی ظاهرا طبق توضیحات دوست خوبمون در vb  به صورت دیفالت ارتباط با پورت در بیسیک خود کامپایلر پیش بینی شده که خود این کلی از مراحل کارت رو ساده میکنه و اصلا درگیر این موضوع نخواهی شد
توضیحات  مبسوط و کاملی در پست قبلی بود که بهره خوبی میتونی ازش ببری

ممنون جناب زارع
فکر میکنم دلفی از زبان های قوی و سخت باشه که خوب فعلا همونطوری که گفتید با ویژوال بیسیک چون این امکانات گویا وجود داره کار راحت تر هست
ممنون از راهنماییتون
stubbern نوشته شده توسط:

داداش آریا اول بگم که این کار یعنی روشن و خاموش کردن دیود یا لامپ های نوری با AVR میکرو کنترولر خیلی راحت تره و بهتره بگم با VB اصلا فکر نکنم ممکن بشه...

ولی برای اینکه وقتی روی یکی کلیک می کنن object دیگه غیر فعال بشه باید از خاصیت visible اون استفاده کنی...

یعنی با مقادیر true or false مقدار دهی کنی...

ولی توصیه می کنم این کار رو با AVR انجام بدی چون خیلی سریعتر به جواب می رسی...

می تونم ساختار برنامه رو هم بگم اگه خواستی بگو عزیزم...

من هنوز واسه چیزایی که یادم دادی بهت مدیونم...0 0 0

(یه داداشی که بیشتر نداریم 0 0 0)


ممنون آبجی ستاره
اول اینکه من که چیز درست و حسابی و به درد بخوری بلد نبودم و نیستم که به شما یاد بدم
هیچ دینی هم شما به من نداری
لطف داری
در مورد برنامه هم
ببین آبجی من باید با کامپیوتر کنترل کنم دستگاه ها رو پس نیاز به یک رابط بین کامپیوتر و سخت افزار و میکرو خودم دارم
که این رابط ها زبان های برنامه نویسی و همون کامپایلر ها هستند
که ویژوال بیسیک یکی از این ها هست و هر کاری رو تا اونجایی که من میدونم میشه انجام داد
در مورد اینکه LED (همون لامپ نوری ) که شما گفتید یا دیود ها اول اینکه خوب ولتاژ و جریان کار یک LED با یک وسیله که با برق شهری کار کنه متفاوت هست و سطوح ولتاژ رو باید کم و زیاد بشه
در مورد میکرو کنترلر AVR هم کاملا مشخص هست این این میکرو کنترلر بسیار قوی تر و قدرتمند تر هست اما برای اینطور کار کوچیکی ارزش نداره یک میکرو AVR استفاده بشه
چون معمولا کارهای سنگین و بزرگ رو با این میکرو انجام میدن
در عین حال شرط این کار این هست که با میکرو 8051 نوشته بشه
وگر نه میشد از میکرو کنترلرهای AVR یا   ARM یا PIC یا  حتی 8086 و یا Z80  استفاده کرد
خودم به شخصه کار با AVR و ARM رو ترجیح میدادم اما خوب باید با 8051 کار بشه
ممنون میشم این true  و false  رو توضیح بدی بیشتر
و ساختار برنامه رو که گفتی بزاری ممنون میشم

Aria نوشته شده توسط:عرض کنم به حضورتون که
برای اینکه وقتی دیتا نباشه میکرو اون رو صفر منطقی فرض نکنه
میام سطوح 1 رو +5 ولت و 0 رو -5 ولت میزارم که وقتی دیتا نباشه فرض بر صفر منطقی نکنه
همین که چه طوری کلاک پالس رو از خود پورت سریال بگیرم یه کم مشکل ساز شده
راهی داره یا نه و چه طوری ؟
یعنی بهتر میشه اگه از خود پورت سریال کلاک پالس بگیره
و خوب اگه این طوری نمیشه همون حالت دیگه که از پورت سریال کلاک نگیریم
این رو چه طوری انجام بدم ؟
اضافه کنم هیچ آشنایی با ویژوال بیسیک ندارم و خوب ممنون میشم که اگه واضح تر و کامل تر راهنمایی کنی و کاملتر متوجه شم
اگه مثالی بتونی بزنی که یک پورت رو مثلا با فشردن کلید در کامپیوتر یک  منطقی و با دوباره زدن قطع بشه ممنون میشم

چیزی که می گم نظر منه و ممکنه کسی که از من اطلاعات بیشتری داره راه بهتری بدونه...

فک نمی کنم درست باشه از سیستم کلاک رو دریافت کنیم چون لزومی نداره که در تمام ساعات روشن بودن دستگاه ها، سیستم رو به پردازش و ارسال و دریافت مجبور کنیم. اینگونه اگر سیستم یک لحظه هم دچار عدم پردازش بشه (مثلا پردازش CPU صددرصد بشه) شما شاهد خاموش شدن دستگاه هایتان خواهید بود.

پس باید کاری کنید که برای یک پایه (که مربوط به یک دستگاه است): با یک(منطقی)  شدن پایه، دستگاه روشن شود، با صفر(منطقی) شدن هم دستگاه خاموش گردد. بین این دو حالت هم بدون دریافت پالس روشن یا خاموش بمانند.

متأسفانه نمیدونم کار آی سی 8051 چیه، پس نمیدونم چطور میشه این عمل رو با این آی سی انجام داد... اگر اطلاعاتی در این مورد بذاری بهتر میتونم کمک کنم...

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

پس شما نحوه عملکرد آی سی هنگام دریافت دیتا ها رو مشخص کنید، تا بتونم برنامه اون رو براتون بنویسم یا توضیح بدم..

نحوه عملکرد آی سی در هنگام دریافت دیتا دقیقا یعنی چی رو توضیح بدم ؟
اما خوب من ساختمان داخلی میکرو 8051
AT89C51
رو براتون قرار دادم

لطف کنید نگاهی بندازید اگه سوالی در بخش خاصی دارید بفرمائید تا من توضیحات کامل رو ارائه بدم خدمتتون
ممنون
برنامه میکرو به زبان اسمبلی و رابط کامپیوتر هم که ویژوال هست زبانش
ببینید فقط اینکه چطوری با زدن یک کلید در ویژوال بک منطقی و صفر منطقی رو به پورت سریال بفرستیم و بعد با زوج های ترانزیستوری سطوح ولتاژ رو کم و زیاد کنیم تا با میکرو هم امپدانس بشه و میکرو بتونه کار کنه

بابت دیتا شیت ممنونم... این آی سی Programmable هست که!!! اینجوری بهتره، هر جوری بخوای میتونی کنترلرت رو طراحی کنی ... دو روز گذشته و من هنوز کار مفیدی برات انجام ندادم...

یه برنامه تندکی نوشتم که برا دست گرمی متوجه کارکردن با کنترل Serial Port بشی (

) و یه برنامه C# هم از یه جای دیگه معرفی می کنم تا بیشتر با عملکردش آشنا بشی (
)... من خودم C# کار می کنم اما برنامه ای که برات نوشتم VB هست...

من نمیتونم طوری برنامه رو بنویسم که کلاک رو تآمین کنه چون نمی تونم کاری کنم که یه دیتایی رو مرتباً به صورت سریالی و بدون توقف ارسال و تکرار کنه اونم با یک بیت ریت ثابت (در واقع نمی تونم تضمین کنم)...  اگر کسی میدونه بگه تا هممون استفاده کنیم...

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

اگه فکر میکنی تو این تاپیک نمیشه با این وضع تبادل اطلاعات کرد... راه دیگه ای رو پیشنهاد کن... خواستی حتی شمارمو برات می فرستم... چون داداش آریامونو دوست دارم...

صفحه ها: 1 2
لینک مرجع