۰۵-مهر-۱۳۸۹, ۲۲:۰۶:۰۹
تو بسکام می شه بیت های یک فایل هگز رو جدا کرد . با چه دستوری ؟ اگه نه و فقط می شه کارکترهای یک متغیر string رو جدا کرد آیا می شه که متغیر string رو به هگز تبدیل کرد . با چه دستوری ؟
(۰۵-مهر-۱۳۸۹, ۲۳:۴۶:۱۷)Gawky نوشته است: [ -> ]خوب تک تک کارکترهای string رو جدا کد و تبدیل به دسیمالشون کن ( یا کد اسکی ) و اون وقت از دستورات فوق استفاده کن !!!برنامه برای جایی که باید دیتا رو از طریق ارتباط سریال بگیره از لحاظ خطا بررسی کنه و بعد تو مموری کارت دخیره کنه . ماشاالله که دیتا هم حجمش کم نیست و سرعت هم این وقتا خیلی مهم می شه . راه دیگه ای سراغ دارید ؟
(۰۶-مهر-۱۳۸۹, ۰۰:۳۱:۳۹)Gawky نوشته است: [ -> ]واسه تست خطاست !!!؟؟؟؟با بیت پریتی یا همون توازن زوج و فرد در بیت شماره 10 (اگه دیتا 8 بیتی باشه )از بایت ارسال شده . همچنین می خوام برای اطمینان بیشتر handshaking سخت افزاری و یا نرم افزاری انجام بدم . مشکل اولم فعلا همین دریافت اطلاعات به صورت هگز است تو پروتئوس .
چجوری خطا رو تشخیص می دی ؟
(۰۶-مهر-۱۳۸۹, ۰۰:۵۶:۰۱)Gawky نوشته است: [ -> ]خوب مهندس کاراکتر کارکتر بگیر !! ( مثل برنامه من )درست نفهمیدم چی می گی . می شه بگی کدوم برنامه یا PHP رو بگی . بیشتر توضیح بده .
همونجا تست کن ببین دیتا درسته یا نه !!!!
بعد کاراکتر بعدی رو بگیر !!!
حالا قبل از این کار می تونی کارکتر گرفته شده رو به تبدیل به رشته کنی !! ( بازم مثل برنامه نمونه من )
در ضمن کد enter عدد 13 هستش و این قضیه یادت نره !!
$regfile = "M16def.dat" : $crystal = 1000000 : $baud = 9600
'---------------------------------------------------
Config Lcdpin = Pin , Db7 = Pina.7 , Db6 = Pina.6 , Db5 = Pina.5 , Db4 = Pina.4 , E = Pina.3 , Rs = Pina.2
Config Lcd = 16 * 2
'---------------------------------------------------
Dim A(10) As Byte , I As Byte , T As Byte , B As Byte , Receive As String * 100 , Ant As Byte
'---------------------------------------------------
Config Pinb.0 = Input
'---------------------------------------------------
Cls : Home L : Lcd "salam" : Wait 2 : Cls
'---------------------------------------------------
A(1) = 162 : A(2) = 51 : A(3) = 91 : A(4) = 120 : A(5) = 20
'---------------------------------------------------
Do
Debounce Pinb.0 , 1 , Ant , Gosub
B = Inkey()
If B <> 0 Then Gosub Receive_program
Loop
'---------------------------------------------------
Ant:
Printbin 85 ; 13
Cls
For I = 1 To 5
Printbin A(i)
Lcd Chr(a(i))
Lcd " "
Next
Printbin 13
Return
'---------------------------------------------------
Receive_program:
If B = 13 Then :
Lcd Receive
Waitms 50
Ant = 1
Else :
If Ant = 1 Then :
Receive = Chr(b) : Ant = 0
Else :
Receive = Receive + Chr(b)
End If
End If
Return
(۰۶-مهر-۱۳۸۹, ۰۱:۳۴:۰۷)Gawky نوشته است: [ -> ]حواسم نبود !راستش درست متوجه نشدم ولی تا اونجا که فهمیدم کد اسکی دریافت می شه ولی من می خوام که از ترمینال مجازی پروتئوس یا برنامه ی کامپیوتری که با کام به میکرو وصل شده باینری یا هگز بگیرم که به نظرم این کار رو می شه با دستورات inputbin و inputhex انجام بدم اما مشکل اصلی اینجاست که که داده های دریافتی به صورت 12 بیتی است و من باید بیت اول ، آخر و بتی پریتی از این بیتها رو چک کنم .
تایپیک زیر رو با اینجا اشتباه گرفتم !
http://www.iranled.com/forum/showthread....#pid136333
کد php:$regfile = "M16def.dat" : $crystal = 1000000 : $baud = 9600
'---------------------------------------------------
Config Lcdpin = Pin , Db7 = Pina.7 , Db6 = Pina.6 , Db5 = Pina.5 , Db4 = Pina.4 , E = Pina.3 , Rs = Pina.2
Config Lcd = 16 * 2
'---------------------------------------------------
Dim A(10) As Byte , I As Byte , T As Byte , B As Byte , Receive As String * 100 , Ant As Byte
'---------------------------------------------------
Config Pinb.0 = Input
'---------------------------------------------------
Cls : Home L : Lcd "salam" : Wait 2 : Cls
'---------------------------------------------------
A(1) = 162 : A(2) = 51 : A(3) = 91 : A(4) = 120 : A(5) = 20
'---------------------------------------------------
Do
Debounce Pinb.0 , 1 , Ant , Gosub
B = Inkey()
If B <> 0 Then Gosub Receive_program
Loop
'---------------------------------------------------
Ant:
Printbin 85 ; 13
Cls
For I = 1 To 5
Printbin A(i)
Lcd Chr(a(i))
Lcd " "
Next
Printbin 13
Return
'---------------------------------------------------
Receive_program:
If B = 13 Then :
Lcd Receive
Waitms 50
Ant = 1
Else :
If Ant = 1 Then :
Receive = Chr(b) : Ant = 0
Else :
Receive = Receive + Chr(b)
End If
End If
Return