elahe1393
سه شنبه 25 شهریور 1393, 10:30 صبح
برنامه ای نوشتم که با دستگاهی از طریق پورت سریال ارتباط برقرار میکنه مرتبا داده از دستگاه به برنامه ارسال میشه من بر اساس نیازم یه رشته به دستگاه ارسال میکنم تا تنظیماتی روی دستگاه اعمال بشه ابتدا یه $ میفرستم دستگاه میفهمه داده میخواد براش ارسال بشه بعد 50 میلی ثانیه یک رشته برحسب تنظیماتم میفرستم وقتی دستگاه رشته رو دریافت کرد یک بسته مثل Command is $$$1,1,150,1,1,30# برام میفرسته زمانی هم که تنظیماتو اعمال کرد یک بسته مثل command1:1\r\nPWM1=150\r\nvelocity1:1\r\ncommand2: 1\r\nPWM2=30# برام میفرسته بعد از این بسته هام برحسب تنظیمات ارسال شده تنظیم شدن حالا من میخوام وقتی رشته کلی رو دریافت کنم همه این بخش هارو تفکیک کنم تا بفهمم دستگاه کجا داده منو دریافت کرده کجا تنظیماتو اعمال کرده کدوم بسته داده برحسب تنظیمات منه طول بسته هام متغیره و اعداد منفی هم میگیره میشه منو راهنمایی کنید تا یه الگوریتمی برای تفکیک این رشته بدست بیارم تا بتونم اعتبارسنجی کنم
نمونه رشته دریافتی از کل این بخشها
$28303,0,0,12,0,0,0# \r\n$28304,0,1,13,0,0,0# \r\n$28305,0,0,13,0,0,0# \r\n$28306,0,0,13,0,0,0# \r\n$28307,0,1,14,0,0,0# \r\n$28308,0,0,14,0,0,0# \r\n$28309,0,0,14,0,0,0# \r\n$28310,0,0,14,0,0,0# \r\nCommand is $$$1,1,150,1,1,30#$$28311,0,0,14,0,0,-2# \r\n$28312,0,0,14,0,0,-2# \r\n$28313,0,0,14,0,0,-2# \r\n\r\ncommand1:1\r\n$28314,0,0,14,0,0,-2# \r\nPWM1=150\r\nvelocity1:1\r\ncommand2:1\r\nPWM2= 30#$\r\n$28315,0,0,14,0,0,-2# \r\n$28316,150,0,14,30,0,-2# \r\n$28317,150,0,14,30,0,-2# \r\n$28318,150,0,14,30,0,-2#
البته اینم بگم بعضی وقتا امکان داره چندتا کاراکتر کمو بیش داشته باشه مثلا به جای سه تا $ پشت سرهم دوتا باشه یا یه بسته مثلا $1 بینش باشه خیلی وقته دارم روش کار میکنم ولی هنوز نتونستم به یه نتیجه معقولانه برسم
نمونه رشته دریافتی از کل این بخشها
$28303,0,0,12,0,0,0# \r\n$28304,0,1,13,0,0,0# \r\n$28305,0,0,13,0,0,0# \r\n$28306,0,0,13,0,0,0# \r\n$28307,0,1,14,0,0,0# \r\n$28308,0,0,14,0,0,0# \r\n$28309,0,0,14,0,0,0# \r\n$28310,0,0,14,0,0,0# \r\nCommand is $$$1,1,150,1,1,30#$$28311,0,0,14,0,0,-2# \r\n$28312,0,0,14,0,0,-2# \r\n$28313,0,0,14,0,0,-2# \r\n\r\ncommand1:1\r\n$28314,0,0,14,0,0,-2# \r\nPWM1=150\r\nvelocity1:1\r\ncommand2:1\r\nPWM2= 30#$\r\n$28315,0,0,14,0,0,-2# \r\n$28316,150,0,14,30,0,-2# \r\n$28317,150,0,14,30,0,-2# \r\n$28318,150,0,14,30,0,-2#
البته اینم بگم بعضی وقتا امکان داره چندتا کاراکتر کمو بیش داشته باشه مثلا به جای سه تا $ پشت سرهم دوتا باشه یا یه بسته مثلا $1 بینش باشه خیلی وقته دارم روش کار میکنم ولی هنوز نتونستم به یه نتیجه معقولانه برسم