ارسال تصویر از طریق ارسال post http توسط EC200U-EU به http server

سلام به همگی دوستان، خیلی ممنونم از وقتی که می‌ذارین :pray:
من یک http server برروی یک cloud server اجرا کردم، و می‌خوام از طریق AT CMD و ارسال post http via uart/usb به سرور تصاویری رو ارسال کنم و از طریق یک http client دیگه (مثلا مرورگر گوشی) به سرور متصل بشم و تصاویری که EC200U داره ارسال میکنه رو مشاهده کنم.
کد http سرور به این صورت هست، یک کلاینت برای آپلود تصاویر به سرور متصل میشه و یک کلاینت دیگه برای مشاهده تصاویر ارسال شده به سرور متصل می‌شود.
کد سرور:



وقتی از طریق کلاینت دیگه(مثلا از طریق کامپیوتر) به روی سرور تصویر آپلود می‌کنم، مشکلی وجود نداره.
کد کلاینت کامپیوتر برای آپلود تصویر بر روی سرور:
کد کلاینت برای آپلود تصویر
اما وقتی می‌خوام از طریق post http via uart/usb اینکار رو کنم ارور 400 رو می‌گیرم. (کادر زرد مشخص شده در تصویر)
AT CMDهای ارسال شده با نرم افزار Qnavigator:

AT+QHTTPCFG=“contextid”,1

AT+QHTTPCFG=“contenttype”,3 // تنطیم برای ارسال تصویر حالت multipart/form-data

AT+QHTTPCFG=“form/data”,“frame”,“image.jpg”,“image/jpeg” // استفاده از اسم frame در post http

AT+QIACT?

AT+QICSGP=1,1,“mcinet”,“”,“”,1

AT+QIACT?

AT+QHTTPURL=39,80

http://“s-e-r-v-e-r-i-p”/upload_frame

AT+QHTTPPOST=14470,80,80 //حجم تصویر ارسالی
//ارسال تصویر از طریق send file Qnavigator

(تکه کد مشخش شده در کادر زرد) چیزی که من فهمیدم مشکل در این قسمت از کد هست، وقتی post http توسط سرور دریافت میشه، قسمت ‘frame’ رو نمی‌تونه پیدا کنه که بتونه به فایل تصویر رو از هدر دریافتی جددا کنه و این ارور رو برمی‌گردونه
سعی کردم با کامند AT+QHTTPCFG=“form/data”,“frame”,“image.jpg”,“image/jpeg” این مشکل رو حل کنم ولی باز درست نشد.
چجور می‌تونم این مشکل رو حل کنم؟ و آیا رویه‌ای که برای ارسال تصویر با http post via uart/usb رفتم صحیح است؟

سلام چرا از بستر FTP استفاده نمیکنیم بخصوص در دریافت

1 پسندیده

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

سلام دوست عزیز
از اینکه ماژولتون IP گرفته و سوکت به درستی زده شده و سرور سوکت رو ریجکت نمیکنه اطمینان دارید ؟
پیشنهاد میکنم اول از یک مثال خیلی ساده برای ارسال چندبایت شروع کنید که روند و ارتباطات رو مطمئن بشید

1 پسندیده

سلام، خیلی ممنونم از پیشنهادتون :pray:
من اومدم برای تست یه متن رو از طریق post http via uart/usb به EC200U و به سرور ارسال کردم و برای باقی کلاینت‌ها نمایش دادم و تونستم خروجی بگیرم.
چیزی که متوجه شدم، مشکل من بیشتر به قالب دریافت در سمت سرور برمی‌گرده، وقتی سرور post http request رو دریافت می‌کنه در قسمت body به دنبال ‘frame’ می‌گرده، که بدونه از اونجا به بعد داره دیتای تصویر شروع میشه. چجور میشه این قسمت ‘frame’ رو در body post http تعریف کرد؟
حتی کامند "AT+QHTTPCFG=“form/data”,“frame هم کار نکرد.

سلام مجدد
شما دیتا تصویر رو از چه طریقی دارید داخل EC200 ذخیره میکنید که الان میخواید با HTTP Post برای سرورتون ارسالش کنید و این فایل کجای حافطه ذخیره شده ؟
و اینکه کامند qhtpcfg مگه از تایپ image/jpg پشتیبانی میکنه ؟

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