ايران ويج

نسخه‌ی کامل: کمک در مورد پورت سریال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
من میخوام ی برنامه بنویسم که 7 بایت داده هگز را بخونم و با 7 بایت دیگه مقایسه کنم اما هر کاری می کنم جواب نمیده
مهندس چی کار کردی که نمی شه !

بعد این هفت داده هکز به پورت سریال چی ربطی داره !
میخوام 7بایت هگزاز پورت سریال کامپیوتر ارسال کنم و میکرو 7 بایت بگیره با 7بایت داخل حافظه مقایسه کنه
ا

کد php:
/********************************************
Project :RS485                              
Version :1                                  
Date    : 2009/08/11                       
Author  : Abouzar Torabi                        
Company : ALM                             
Comments: 

e-mail:torabi.ieee@gmail.com

Chip type           : ATmega32
Program type        : Application
Clock frequency     : 4.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 512
*********************************************/
#include <mega32.h>
#include <delay.h> 
#include <stdio.h>  
#include <string.h> 
#define xtal 4000000     
//********************************************
flash char b[7]={0xff,0x01,0x88,0x00,0x00,0x00,0x89};//Right
flash char c[7]={0xff,0x01,0x08,0x00,0x00,0x00,0x09};//down
flash char o[7]={0xff,0x02,0x00,0x04,0x00,0x20,0x26};//left
flash char p[7]={0xff,0x0a,0x88,0x90,0x00,0x40,0x62};//up
//******************************************** 
void main(void)

char a[7];
int z;
int m=1000;
unsigned char n=7;
            
PORTA=0x00;
DDRA=0xff;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;
 
PORTD=0x00;
DDRD=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;

while (
1)
 {           
 
gets(a,7);
 
z=strncmpf(a,b,n);
 if(
z==0){
 
PORTA.0=~PORTA.0;
 
delay_ms(m);
 }
 
z=strncmpf(a,c,n);
 if(
z==0){
 
PORTA.1=~PORTA.1;
 
delay_ms(m);
 } 
 
z=strncmpf(a,o,n);
 if(
z==0){
 
PORTA.2=~PORTA.2;
 
delay_ms(m);
 } 
 
z=strncmpf(a,p,n);
 if(
z==0){
 
PORTA.3=~PORTA.3;
 
delay_ms(m); 
 }       
 }  
//end while
  
}//end main 
ولی درست جواب نمیده
سلام
من با codevision کار میکنم.
می خوام با میکرو ارتباط سریال برقرار کنم ولی تا حالا اینکارو نکردم، می خوام یه سری دستورات رو بفرستم روی پورت و جوابشونو از پورت بخونم. از codewizard که استفاده میکنم دستوراتی که میاره رو اصلا متوجه نمی شم و نمی دونم کدوم قسمت برنامه دستورات اضافی خودمو بنویسم!!
کسی می تونه یه توضیح کام برام بده؟
(۱۵-شهریور-۱۳۸۸, ۱۱:۰۰:۵۲)a_azari نوشته است: [ -> ]سلام
من با codevision کار میکنم.
می خوام با میکرو ارتباط سریال برقرار کنم ولی تا حالا اینکارو نکردم، می خوام یه سری دستورات رو بفرستم روی پورت و جوابشونو از پورت بخونم. از codewizard که استفاده میکنم دستوراتی که میاره رو اصلا متوجه نمی شم و نمی دونم کدوم قسمت برنامه دستورات اضافی خودمو بنویسم!!
کسی می تونه یه توضیح کام برام بده؟

اگه تو کدویزارد فقط ارسال رو قعال کنی (بدون وقفه) که چیزی اضافه نمی کنه. فقط تنظیمات رجیستر های سریال و کتابخونه stdio برای دستورهای ارسال داده ...
خیلی راحت با دستورهای puts ، putsf ، putchar و ... میتونی دیتا ارسال کنی.
ولی اگه دریافت رو هم تو کدویزارد فعال کنی (با وقفه) یه بلوک وقفه (اینتراپت) میسازه که هر وقت دیتا از پورت بیاد این وقفه قعال میشه و دیتای دریافتی تو متغیر data میره. اینجا دیگه هر طور خواستی باید کد بنویسی و اطلاعات رو جمع کنی.
مثلا من اینو نوشتم اطلاعات رو میگیره و تو rx_buffer جمع می کنه تا به پایان خط برسه.
کد:
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (data == '\n')
   {
        rx_buffer[rx_wr_index]='\0';
        rx_wr_index=0;
        p = 1;
        rx_counter=0;
        rx_buffer_overflow=1;
        return;
   }
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}
سلام من با دستور پرینت هرچی به پورت سریال میفرستم تو وی بی دات نت ؟ چاپ میشه همه کریستالها رو هم امتحان کردم لطفا یکی کمکم کنه...
(۰۸-آذر-۱۳۸۸, ۱۳:۰۶:۱۰)credelboy2004 نوشته است: [ -> ]سلام من با دستور پرینت هرچی به پورت سریال میفرستم تو وی بی دات نت ؟ چاپ میشه همه کریستالها رو هم امتحان کردم لطفا یکی کمکم کنه...
پروگرامرت چي هست ؟
سلام من درباره نحوه انتقال دیتا در پروتکل usart & uart اطلاعات میخواهم (لطفا)
سلام
ما یه پروژه داریم میخوایم از یک میکرو یکسری اطلاعات را بفرستیم و اون را روی یک میکروی دیگر توی فاصله ی 50 60 متری بگیریم و میکروی دوم را به کامپیوتر وصل کنیم اطلاعات را آنلاین ببینیم
خیلی ممنون میشم اگه کمک بکنین
(۲۵-مرداد-۱۳۹۰, ۱۷:۴۹:۳۵)zebel نوشته است: [ -> ]سلام
ما یه پروژه داریم میخوایم از یک میکرو یکسری اطلاعات را بفرستیم و اون را روی یک میکروی دیگر توی فاصله ی 50 60 متری بگیریم و میکروی دوم را به کامپیوتر وصل کنیم اطلاعات را آنلاین ببینیم
خیلی ممنون میشم اگه کمک بکنین
سلام دوست عزیز تو فروم جستجو کن مطلب پیدا میشه
برای فاصله 50 - 60 متری میتونی از ماژولهای فرستنده گیرنده بیسیم مثله hmtr استفاده کنی
منظورت از آنلاین چیه؟ یعنی اطلاعات به صورت real time یا بلادرنگ یعنی همون لحظه ببینی تو کامپیوتر یا نه می خوای بعد از اینکه به کامپیوتر ارسال شد از طرق اینترنت ارسال بشه
میخوایم real timeببینیم
صفحه‌ها: 1 2