السلام عليكم
حبايبي تكفون أبي كود C++ يرسل hexadecimal عير السريال بورت عشان أرسلها لمايكروكنتروللر
الطريقة ( يقوم المستخدم بإدخال رقم 1 فيرسل البرنامج هكسادسمال نمبر للمايكروكنتروللر) جزاكم الله خيرا
السلام عليكم
حبايبي تكفون أبي كود C++ يرسل hexadecimal عير السريال بورت عشان أرسلها لمايكروكنتروللر
الطريقة ( يقوم المستخدم بإدخال رقم 1 فيرسل البرنامج هكسادسمال نمبر للمايكروكنتروللر) جزاكم الله خيرا
تم تعديل هذه المشاركة بواسطة hatem03 في 6 يناير 2009 في 17:48
بســم الله الـرحمــن الرحيــم
اخي الكريم للتعامل مع السيريل بورت استخدم الدوال المضمنة في الملف الرأسي winbase.h
الدالة CreateFile لفتح البورت والدالة WriteFile لارسال البيانات والدالة ReadFile لاستقبال البيانات
واستخدم التركيب DCB لاعداد baudrate و Parity و Stopbits وباقي الاعدادات كما يمكن
استخدام الدالة BuildCommDCB("baud=115200 parity=N data=8 stop=1", &dcb);
مباشرة لاعداد خصائص البورت كوم
وعادة يتم بدء الاتصال بهذه القيم COM1: baud=1200 parity=N data=8 stop=1
ثم يتم قفل البورت والتغيير الى البود ريت 115200 ثم اعادة فتح البورت من جديدطبعا هذا غير ملزم
ولكن يحبذ وضع بروتوكول معين للاتصال بالجهاز مثلا لا يتم الاستقبال والارسال الا بعد استقبال اشارة معينة
وهذا كنوع من الحماية للمايكروكنترولر الذي تريد الاتصال به
وهذا مثال بسيط لارسال بايت واحد عبر البورت كوم 1
#include <windows.h>
//#include <winbase.h> // <windows.h> مضمن في
#include <iostream>
using namespace std;
int main()
{
HANDLE hnd; // التصريح عن مقبض للبورت
DCB dcb; // التصريح عن تركيبة خصائص البورت
char* PortNo ="COM1"; // رقم البورت
DWORD WrittenBytes ; // متغيير تعود به دالة الكتابة
char DataToSend ; // التصريح عن متغيير توضع فيه البيانات المطلوب كتابتها
DataToSend = 0X01 ; // اسناد قيمة 01 هيكس للمتغيير
// تعيين المقبض للبورت كوم 1
hnd=CreateFile (PortNo,
GENERIC_READ | GENERIC_WRITE ,
0 ,
0 ,
OPEN_EXISTING,
0 ,
0 );
// BuildCommDCB تعين بعض خصائص البورت كوم ويمكن استخدام الدالة
dcb.BaudRate= CBR_115200;
dcb.fParity=NOPARITY; // or dcb.fParity=0; // 0-4=no,odd,even,mark,space
dcb.StopBits=1; // or 0,1,2 = 1, 1.5, 2
dcb.ByteSize =8;
dcb.StopBits=ONESTOPBIT;
dcb.DCBlength = sizeof(DCB);
cout << "dcb.BaudRate " << (int) dcb.BaudRate << endl;
cout << "dcb.fParity " << (int) dcb.fParity << endl;
cout << "dcb.StopBits " << (int) dcb.StopBits << endl;
cout << "cb.ByteSize " << (int) dcb.ByteSize << endl;
SetCommState(hnd, &dcb); // اسناد الخصائص للبورت
// ارسال القيم للبورت
WriteFile(hnd, // مقبض البورت
&DataToSend, // البيانات المطلوب ارسالها
sizeof DataToSend, // حجم البيانات المرسلة
&WrittenBytes, // عدد البايتات المرسلة
0); // التاكد من ارسال كل البيانات قبل رجوع الدالة
CloseHandle(hnd); // اغلاق البورت
return 0;
}تم تعديل هذه المشاركة بواسطة haty في 7 يناير 2009 في 04:55
while( "اسلام" )
{
cout >> "الموت لبني صهيون" >> endl;
}
return "فلسطين";
يا هلا و غلا أخوي haty
شرحك جميل و وفيت و كفيت
لكن لو تكتبلي مثال صغير كامل لإرسال hex. no. علشان تثبت المعلومة و توضح أكثر و أكثر
أدري اني ثقلت عليك بس تحملني
الأخ الكريم/الأخت الكريمة
السلام عليكم ورحمة الله وبركاته.
مرحباً بكم في منتدى الفريق العربي للبرمجة
تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين وأعمال السنة.
قواعد طرح المشاركات
شاكرين لكم حُسن تعاونكم
هذا الموضوع مغلق.