اطلاعیه

Collapse
No announcement yet.

ارتباط سریال در متلب

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارتباط سریال در متلب

    سلام دوستان
    من می خوام از یه سری دیتا با متلب به میکرو بفرستم و دریافت کنم
    helpمتلب رو خوندم و کدی که نوشتم با این صورت هستش:
    clc
    char a;
    s=serial('com3&#039
    baudrate=9600
    DataBits=8
    fopen(s)
    fprintf('s=',a)
    out=fscanf('resive=',s)
    وقتی برنامه رو اجرا می کنم ارور زیر رو می ده:
    ??? Error using ==> serial.fopen at 71
    Port: COM3 is not available. No ports are available.
    Use INSTRFIND to determine if other instrument objects are connected to the requested device.

    Error in ==> Untitled at 6
    fopen(s)
    در صورتی که از طریق هایپر ترمینال می تونم با این پورت کار کنم و send,resiveداشته باشم

    پیامبری که از بلندی بترسد ،هرگز به معراج نمی رسد....

    #2
    پاسخ : ارتباط سریال در متلب

    سلام,
    منم برای پایان نامم همین مشکل رو دارم.
    این سایتو نگاه کنید شاید بدردتون خورد:
    http://mycola.info/2011/04/02/plotting-the-serial-port-data-with-matlab/

    از دوستان عزیز سوآل دارم اگر امکان داره بهم کمک کنید.
    من میخام مقادیر یکی از یایه های آنالوگ arduino رو با نرخ نمونه برداری ۵۱۲ نمونه در ثانیه وارد متلب کنم.
    چطوری این کار رو انجام بدم ؟
    یه توضیح کلی که مسیرم مشخص بشه

    دیدگاه


      #3
      پاسخ : ارتباط سریال در متلب

      مطمئنی که پورت قبل از اجرای بسته در اختیار برنامه دیگه ای نبوده؟(مثلاً Hyper Terminal). توی خود این برنامه بعد از پایان کار با پورت، باید پورت رو ببندی.
      در ضمن برای تنظیم مشخصات s باید به صورت زیر بنویسی:
      [code=matlab]s.baudrate = 9600;
      s.databits = 8;[/code]
      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
      لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
      با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
      اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
      يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

      دیدگاه


        #4
        پاسخ : ارتباط سریال در متلب

        نوشته اصلی توسط هـادی
        مطمئنی که پورت قبل از اجرای بسته در اختیار برنامه دیگه ای نبوده؟(مثلاً Hyper Terminal). توی خود این برنامه بعد از پایان کار با پورت، باید پورت رو ببندی.
        بله حق با شما بود پورت با هایپر ترمینال باز بود
        شما با نرم افزار متلب commandبرای اسیلوسکوپ فرستادید؟
        پیامبری که از بلندی بترسد ،هرگز به معراج نمی رسد....

        دیدگاه


          #5
          پاسخ : ارتباط سریال در متلب

          نوشته اصلی توسط atefe.fallah
          بله حق با شما بود پورت با هایپر ترمینال باز بود
          شما با نرم افزار متلب commandبرای اسیلوسکوپ فرستادید؟
          نه با اسکوپ کار نکردم ولی هم با کدنویسی و هم با سیمولینک تبادل دیتا با برد FPGA داشتم.
          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

          دیدگاه


            #6
            پاسخ : ارتباط سریال در متلب

            این کد هست که برای نمایش دادن دیتا از روی پورت سریال نوشته شده:

            کد:
            %%real time data plot from a serial port 
            % This matlab script is for ploting a graph by accessing serial port data in
            % real time. Change the com values and all variable values accroding to
            % your requirements. Dont forget to add terminator in to your serial device program.
            % This script can be modified to be used on any platform by changing the
            % serialPort variable. 
            % Author: M J Di
            
            %%Clear all variables
            
            clear all;
            clear all;
            close all;
            if (isempty(instrfindall)~=1)
              fclose(instrfindall);
              delete(instrfindall);
            end
            %%Variables (Edit yourself)
            
            MaxDeviation = 256;%Maximum Allowable Change from one value to next 
            TimeInterval=0.0000001;%time interval between each input.
            loop=90;%count values
            %%Set up the serial port object
            
            s = serial('COM17'); %assigns the object s to serial port
             
            set(s, 'InputBufferSize', 256); %number of bytes in inout buffer
            set(s, 'FlowControl', 'Hardware');
            set(s, 'BaudRate', 128000);
            set(s, 'Parity', 'none');
            set(s, 'DataBits', 8);
            set(s, 'StopBit', 1);
            set(s, 'Timeout',10);
            fopen(s);
            
            
            
            time =now;
            voltage = 0;
            %% Set up the figure 
            figureHandle = figure('NumberTitle','off',...
              'Name','Voltage Characteristics',...
              'Color',[0 0 0],'Visible','off');
            
            % Set axes
            axesHandle = axes('Parent',figureHandle,...
              'YGrid','on',...
              'YColor',[0.9725 0.9725 0.9725],...
              'XGrid','on',...
              'XColor',[0.9725 0.9725 0.9725],...
              'Color',[0 0 0]);
            
            hold on;
            
            plotHandle = plot(axesHandle,time,voltage,'LineWidth',1,'Color',[0 1 0]);
            
            %xlim(axesHandle,[min(time) max(time+0.001)]);
            xlim(axesHandle,'auto');
            
            % Create xlabel
            xlabel('Time','FontWeight','bold','FontSize',14,'Color',[1 1 0]);
            
            % Create ylabel
            ylabel('Voltage in V','FontWeight','bold','FontSize',14,'Color',[1 1 0]);
            
            % Create title
            title('Real Time Data','FontSize',15,'Color',[1 1 0]);
            
            %zoom off;
            
            
            %% Initializing variables
            while 1==1
            voltage(1)=0;
            time(1)=0;
            count = 2;
            k=1;
            while ~isequal(count,loop)
              
              
              %%Serial data accessing 
              a =fscanf(s,'%d');
              a=max(a);
              if isempty(a)==0 && a<=256 && a>=0
               voltage(count) = a*33/256;
              
               
               %%For reducing Error Use your own costant
               
               voltage(1)=0;   
               if (voltage(count)-voltage(count-1)>MaxDeviation)
                 voltage(count)=voltage(count-1);
               end
               
               time(count) = count;
              
              end
              
               % Sequence Mode
              %set(plotHandle,'YData',voltage,'XData',time);
              %set(figureHandle,'Visible','on');
              %datetick('x','mm/DD HH:MM');
              %pause(TimeInterval);
              count = count +1;
              
            end
            % Page File Mode
              set(plotHandle,'YData',voltage,'XData',time);
              set(figureHandle,'Visible','on');
              %datetick('x','mm/DD HH:MM');
              pause(.000000001);
            flushinput(s);
            drawnow;
            end
            
            
            
            %% Clean up the serial port
            fclose(s);
            delete(s);
            clear s;

            دیدگاه


              #7
              پاسخ : ارتباط سریال در متلب

              نوشته اصلی توسط هـادی
              نه با اسکوپ کار نکردم ولی هم با کدنویسی و هم با سیمولینک تبادل دیتا با برد FPGA داشتم.
              سلام

              شما تو سیمولینک ارتباط سریال داشتید ؟

              من یه مشکلی داشتم که تو این تاپیک مطرح کردم : http://www.eca.ir/forum2/index.php?topic=105297.0

              می تونید کمکم کنید ؟

              دیدگاه


                #8
                پاسخ : ارتباط سریال در متلب

                نوشته اصلی توسط cyborg-thing
                سلام,
                منم برای پایان نامم همین مشکل رو دارم.
                این سایتو نگاه کنید شاید بدردتون خورد:
                http://mycola.info/2011/04/02/plotting-the-serial-port-data-with-matlab/

                از دوستان عزیز سوآل دارم اگر امکان داره بهم کمک کنید.
                من میخام مقادیر یکی از یایه های آنالوگ arduino رو با نرخ نمونه برداری ۵۱۲ نمونه در ثانیه وارد متلب کنم.
                چطوری این کار رو انجام بدم ؟
                یه توضیح کلی که مسیرم مشخص بشه
                سلام
                تو سیمولینک یه ورودی آنالوگ آردوینو انتخاب کنید و به اسکوپ وصل کنید و نرخ نمونه بردازی رو هم تو تنظیمات بلوک ورودی آنالوگ آردوینو تنظیم کنید و اجرا کنید
                telgram:09396888049

                دیدگاه


                  #9
                  پاسخ : ارتباط سریال در متلب

                  مشکل من حل شد
                  ممنون از دوستان
                  پیامبری که از بلندی بترسد ،هرگز به معراج نمی رسد....

                  دیدگاه


                    #10
                    پاسخ : ارتباط سریال در متلب

                    من دانشجوی دکتری برق هستم. کارت مینی دک رو از فروشگاه سایت خریداری کردم . هر کاری کردم با متلب چیزی به پورتها ارسال و یا دریافت کنم نشد که نشد. تمام اینترنت رو زیرو رو کردم تمام کارتها حداقل یک فیلم آموزشی توی سایتشون گذاشته بودن و اتفاقا با استفاده از همون آموزش ها کار رو شروع کردم اما بازم نشد که نشد. به شماره هایی که توی همین سایت هم اعلام شده بود زنگ زدم اما اگه پشت گوشتون رو دیدید اینا هم پاسخ دادن! به هر حال به هر دری زدم که با متلب بتونم یه ال ای دی روشن کنم ولی هرگز نشد حالا انگار باورم شده که این کارت اصلا نمیتونه با متلب هیچ رابطه ای برقرار کنه. خسته و درمونده از همه جا، حالا اما، دارم اینجا ناامیدانه این متلب رو مینویسم میدونم که کسی جوابم رو نمیده ولی ممکنه این مطلب به درد آیندگان بخوره
                    حالا انگار باید همون آردوینو رو بگیرم و این دک کارت رو بندازم توی سطل آشغال.... :cry:

                    دیدگاه


                      #11
                      پاسخ : ارتباط سریال در متلب

                      سلام.
                      از Instrument Control Toolbox استفاده کردید؟

                      دیدگاه

                      لطفا صبر کنید...
                      X