<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=5119&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-12-21T17:03:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5119&amp;mode</id>
<entry>
<author><name><![CDATA[adi19887]]></name></author>
<updated>2013-12-21T17:03:45+01:00</updated>
<published>2013-12-21T17:03:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61979#p61979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61979#p61979"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61979#p61979"><![CDATA[
Dziekuje za wszelką pomoc. Co do DDS-a układ był się skończył <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> w jakis tajemniczy sposób... Program na c# działa wystarczyło w metodzie Form1_Load(); dopisać linijkę odsługującą zdarzenie DataRecieved <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Układ sobie działa i radzi też dość dobrze. Temat zamykam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2079">adi19887</a> — 21 gru 2013, o 17:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adi19887]]></name></author>
<updated>2013-12-15T22:17:00+01:00</updated>
<published>2013-12-15T22:17:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61348#p61348</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61348#p61348"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=61348#p61348"><![CDATA[
Może osoba znająca się w temacie DDS-ów może mi pomóc, mianowicie mam AD9833, którego ni da się w żaden sposób zaprogramować. Zmieniłem płytkę pcb (zrobiłem nową - projekt wyżej) a na poprzedniej płytce wszystko hulało. Sprawdziłem połączenia i oscyloskopem sprawdzałem czy atmega8 coś robi, i robi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> więc wykluczam (nie)działanie uC. Jednak zauważyłem dziwną rzecz: na wyjściu DDS-a Multimetrem obserwuje napięcie ok 230 mV i powoli spada do zera (oscyloskop pokazuje przebieg stały o potencjale masy) wcześniej (przed zmianą płytki PCB) nie zauważyłem czegoś takiego. Czy to może być objaw uszkodzonego DDS-a ? Jak to zdiagnozować ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2079">adi19887</a> — 15 gru 2013, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marc90]]></name></author>
<updated>2013-12-13T14:19:28+01:00</updated>
<published>2013-12-13T14:19:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60963#p60963</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60963#p60963"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60963#p60963"><![CDATA[
W programie PC masz zdefiniowany pewien bufor odbiorczy, posiada on 10 elementów.<br />[syntax=c]int&#91;&#93; indata= new int&#91;10&#93;;[/syntax]<br />Następnie z mikrokontrolera wysyłasz dane<br />[syntax=c]for (int i =0;i&lt;10;i++)<br />                                        {<br />                                        usart_putc(wysylka&#91;i&#93;); // jeśli zmienna receive przyjmuje 0 nie wysyła nic (zaglądnij do uart_getc())<br />                                        _delay_ms(10);<br />                                                if(i==9)<br />                                        usart_putc(254);[/syntax]<br />Tylko że gdy od i=0 do i=9, gdy i=9 wykonuje się  usart_putc(wysylka[i]); oraz  usart_putc(254); (ponieważ warunek if jest spełniony). <br />Wykonujesz odbiór danych i twoje 254 przypisuje się do do indata pod zerowym elementem nadpisując to co się tam znajduje. Najlepiej jakbyś przedstawił co konkretnie chcesz osiągnąć. Jak już wcześniej napisałem najlepiej jak ustalisz sobie jakąś stałą ramkę danych którą przesyłasz do PC z oznaczonym zakończeniem. Rób to etapami, wysyłaj z mikrokontrolera najprostsze dane i je interpretuj. Następnie rozbuduj twój program. Dobrze też by było jak zamieszczasz jakiś kod programu to dodaj również błędy jakie Ci wyskakują podczas kompilowania programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1379">marc90</a> — 13 gru 2013, o 14:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adi19887]]></name></author>
<updated>2013-12-12T20:40:05+01:00</updated>
<published>2013-12-12T20:40:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60865#p60865</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60865#p60865"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60865#p60865"><![CDATA[
Kod w C napisałem kontrolnie, chciałem po prostu oderbać i wysłać dane miedzy uC a PC i to nie działało. Teraz mam taki kod:<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Windows.Forms;<br />using System.IO.Ports;<br /><br />namespace serial_com<br />{<br />    public partial class Form1 : Form<br />    {<br />        int&#91;&#93; indata= new int&#91;10&#93;;<br />        int i = 0;<br />        public Form1()<br />        {<br />            InitializeComponent();<br />            serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);<br />        }<br />        public  void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)<br />        {<br />            //indata += serialPort1.ReadExisting().ToString();<br />            <br />            SerialPort sp = (SerialPort)sender;<br />            indata&#91;i&#93; = sp.ReadByte();<br />            i++;<br />            if (i == 10)<br />                i = 0;<br />           <br />        }<br />        /*<br />        delegate void SetTextCallback(string text);<br />        private void SetText(string text)<br />        {<br />            // łądny opis o wątkach po angielsku, nie chce mi się tłumaczyć<br />            //<br />            // InvokeRequired required compares the thread ID of the<br />            // calling thread to the thread ID of the creating thread.<br />            // If these threads are different, it returns true.<br />            if (this.read.InvokeRequired)<br />            {<br />                SetTextCallback d = new SetTextCallback(SetText);<br />                this.Invoke(d, new object&#91;&#93; { text });<br />            }<br />            else<br />            {<br />                this.read.Text = text;<br />            }<br />        }*/<br /><br />        private void button1_Click(object sender, EventArgs e)<br />        {<br />            if (!(serialPort1.IsOpen))<br />            {<br />                serialPort1.Open();<br />                button1.Enabled = false;<br />                button2.Enabled = true;<br />            }<br />        }<br /><br />        private void button2_Click(object sender, EventArgs e)<br />        {<br />            if ((serialPort1.IsOpen))<br />            {<br />                serialPort1.Close();<br />                button1.Enabled = true;<br />                button2.Enabled = false;<br />            }<br />        }<br /><br />        private void button3_Click(object sender, EventArgs e)<br />        {<br />            if (serialPort1.IsOpen)<br />            {<br />                string temp = send.Text;<br />                double temp2 = Convert.ToDouble(temp);<br />                int temp3 = Convert.ToInt16(temp2);<br />                byte temp5 = Convert.ToByte(temp3);<br />                byte&#91;&#93; temp4 = new byte&#91;2&#93;;<br />                temp4&#91;0&#93; = temp5;<br />                serialPort1.Write(temp4, 0, 1);<br />            }<br />        }<br /><br />        private void button4_Click(object sender, EventArgs e)<br />        {<br />            double&#91;&#93; temp6 = new double&#91;10&#93;;<br />            string&#91;&#93; temp7 = new string&#91;10&#93;;<br />            for (int j = 0; j &lt; 10; j++)<br />            {<br />                temp6&#91;j&#93; = Convert.ToDouble(indata&#91;j&#93;);<br />                temp7&#91;j&#93; = Convert.ToString(temp6&#91;j&#93;);<br />            }<br />            <br />            <br />            read.Text = temp7&#91;0&#93;;<br />            textBox1.Text = temp7&#91;1&#93;;<br />            textBox2.Text = temp7&#91;2&#93;;<br />            textBox3.Text = temp7&#91;3&#93;;<br />            textBox4.Text = temp7&#91;4&#93;;<br />            textBox5.Text = temp7&#91;5&#93;;<br />            textBox6.Text = temp7&#91;6&#93;;<br />            textBox7.Text = temp7&#91;7&#93;;<br />            textBox8.Text = temp7&#91;8&#93;;<br />            textBox9.Text = temp7&#91;9&#93;;<br />            <br />        }<br /><br />        <br />    }<br />}[/syntax]<br /><br />oraz na uC:<br />[syntax=c]while(1) {<br /><br />receive = odbierz();<br />                if (receive==255)<br />                {<br />                for (int i =0;i&lt;10;i++)<br />                {<br />                usart_putc(wysylka&#91;i&#93;); // jeśli zmienna receive przyjmuje 0 nie wysyła nic (zaglądnij do uart_getc())<br />                _delay_ms(10);<br />                if(i==9)<br />                usart_putc(254);<br />                }<br />                }<br />}<br />/*[/syntax]<br /><br />To jednak się sypie. Gdy wysyłam jedną daną to jest ok. Gdzie robię błąd ? ( nawiasem mówiąc to tylko taki kod u mnie działa - jeżeli wysyłam jeden znak 8 bitów).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2079">adi19887</a> — 12 gru 2013, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marc90]]></name></author>
<updated>2013-12-12T19:35:32+01:00</updated>
<published>2013-12-12T19:35:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60853#p60853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60853#p60853"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60853#p60853"><![CDATA[
Dostęp do poszczególnych elementów &quot;zmiennej&quot; dane uzyskujesz poprzez indeksowanie, czyli gdy chcesz pierwszy element to piszesz dane[0], kolejny dane[1]. Jak widzisz do każdego elementu możesz się dostać jak do tablicy. Tylko musisz zauważyć że ty twoje dane z mikrokontrolera wysyłasz trochę inaczej niż ja Ci pokazałem. Nie rozumiem za bardzo jak to  działa...<br />[syntax=c]usart_putc(255);<br />                    usart_putc(1);<br />                                    flaga = odbierz();<br />                                    _delay_ms(1000);<br />                                    if(flaga == 255)<br />                                    {<br />                                            usart_putc(j);<br />                                            flaga=0;<br />                                    }<br />                                    else if (flaga==254)<br />                                    {<br />     <br />                                            for (int i = 0; i&lt;10;i++)<br />                                            {<br />                                                    _delay_ms(1000);<br />                                                    usart_putc(i);<br />                                                    flaga=0;<br />                                            }<br />     <br />                                    }<br />     <br />                                    //Wyslane 10 znaków<br />                                   <br />                                    usart_putc(254);[/syntax]<br />Dlaczego wysyłasz takie dziwne dane? W pierwszej kolejności wysyłasz 255 potem 1, do czego to ma służyć? Potem rozumiem że robisz jakąs transmisje znaków w zależności od odebranej flagi (wysłanej z PC) i transmisje kończysz wysłaniem 254... dlaczego to robisz w ten sposób? Czy jest to jakoś uwarunkowane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1379">marc90</a> — 12 gru 2013, o 19:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adi19887]]></name></author>
<updated>2013-12-12T13:03:54+01:00</updated>
<published>2013-12-12T13:03:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60784#p60784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60784#p60784"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60784#p60784"><![CDATA[
Dziekuję za odpowiedź. Proszę potwierdź mój tok myślenia. Tworzę nowy wątek (wkładam to do metody form1() razem z initialize() tak jak niżej):[syntax=csharp]public Form1()<br />        {<br />            InitializeComponent();<br />            Thread odbior = new Thread(SerialData);<br />            odbior.Start();<br />        }[/syntax]<br /><br />następnie tworzę sobie nową metodę SerialData:<br />[syntax=csharp]private void SerialData()<br />        {<br />            string read_str;<br />            serialPort1.ReadTo(&quot;/n&quot;); //sychronizacja danych<br />            read_str=serialPort1.ReadTo(&quot;/n&quot;);<br />            string&#91;&#93; dane=new string&#91;3&#93;;<br />            dane=read_str.Split(',');<br />        }[/syntax]<br />Jak wydobyć dane które potrzebuję ze zmiennej dane  ? Ja wysyłam bajty z uC jako liczby i chciałbym je też odebrać tak samo. Pytam się bo niestety pisać proste programy umiem w C# (naprawdę proste) jednak tutaj już jest gorzej. Może jeszcze potrzebuje małego wytłumaczenia jak działa c# zwłaszcza WindowsForm w nim bo nie widzę tutaj main() etc. i trochę się gubię.<br /><br />Co do tego niezrozumiałego fragmentu, to jest wycinek starego kodu - nie działa on w żaden sposób w tym programie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2079">adi19887</a> — 12 gru 2013, o 13:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marc90]]></name></author>
<updated>2013-12-12T09:49:11+01:00</updated>
<published>2013-12-12T09:49:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60749#p60749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60749#p60749"/>
<title type="html"><![CDATA[Re: Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60749#p60749"><![CDATA[
Moim zdaniem po pierwsze powinieneś wykorzystać klasę Thread, czyli rozbudować program o wielowątkowość. Wystarczy jeden wątek odpowiedzialny za pobieranie danych i ich wyświetlanie oraz główny wątek który odpowiada za wszystkie pozostałe funkcje twojego programu. Możesz też trochę inaczej przesyłać dane z mikrokontrolera do  PC, zakładasz sobie ramkę danych powiedzmy x,x,x /n i taką ramkę wysyłasz:<br />[syntax=c]uart_putc('x');<br />uart_putc(',');<br />uart_putc('x');<br />uart_putc(',');<br />uart_putc('x');<br />uart_puts(&quot;/n&quot;); //informacja dla PC że koniec ramki[/syntax]<br />W twoim programie wykorzystujesz metodę klasy serialPort ReadTo(&quot;/n&quot;). Następnie odebrane dane sobie formujesz za pomocą metody Split klasy string.<br />[syntax=csharp]string read_str;<br />serialPort.ReadTo(&quot;/n&quot;) //sychronizacja danych<br />read_str=serialPort.ReadTo(&quot;/n&quot;);<br />string&#91;&#93; dane=new string&#91;3&#93;;<br />dane=read_str.Split(',');[/syntax]<br />Teraz dostęp masz do każdego elementu ramki danych. Istotne jest też wykonanie &quot;synchronizacji&quot; danych odbieranych. W przypadku gdy włączysz program w chwili w której został już wysłany np. pierwszy element ramki to wywali Ci błąd, dlatego najlepiej zrobić pierwszy pusty odbiór.<br />Nie rozumiem tego fragmentu. Jeżeli chcesz zdefiniować port COM to możesz użyć metody GetPortNames (o ile się nie mylę) i zwróci ci ona jako string podłączone porty COM. Następnie możesz je przypisać do jakieś zmiennej. <br />[syntax=csharp]for (int i = 0; i &lt; 11; i++)<br />                if (index == i)<br />                {<br />                    string lol = &quot;COM&quot; + i;<br />                   <br />                    this.serialPort1.PortName = lol;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1379">marc90</a> — 12 gru 2013, o 09:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adi19887]]></name></author>
<updated>2013-12-11T21:16:51+01:00</updated>
<published>2013-12-11T21:16:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60672#p60672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60672#p60672"/>
<title type="html"><![CDATA[Komunikacja RS232 -&gt;PC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5119&amp;p=60672#p60672"><![CDATA[
Witam serdecznie,<br /><br />Temat wałkowany milion razy, jednak myślę, że dołożę swoje 5 groszy. Napisałem program na uC (atmega8a) i do tego swój &quot;terminal&quot; w c# do dobierania danych i wyświetlania na wykresie. Wszystko działa jak należy gdy działam w układzie np. uC razem z RealTerm - przesyła dane prawidłowo (w formacie hex, wysyłam najpierw 0xFF potem zaś zależnie od tego co sobie wybiorę w terminalu, wysyła jedną liczbę lub ciąg 10 liczb i potwierdzenie w postaci liczby 0xFF od PC i tutaj jest ok). Jednak na moim &quot;terminalu&quot; to nie działa jakby nie odbierał danych. Chciałem aby odbierał pojedyncze bajty zamiast popularnego rozwiązania w postaci stringów. Chyba coś zawaliłem więc wklejam kod z uC:<br />[syntax=c]usart_putc(255);<br />usart_putc(1);<br />flaga = odbierz();<br />_delay_ms(1000);<br />if(flaga == 255)<br />{<br />usart_putc(j);<br />flaga=0;<br />}<br />else if (flaga==254)<br />{<br /><br />for (int i = 0; i&lt;10;i++)<br />{<br />_delay_ms(1000);<br />usart_putc(i);<br />flaga=0;<br />}<br /><br />}<br /><br />//Wyslane 10 znaków<br /><br />usart_putc(254);[/syntax]<br /> oraz kod C#. Proszę o sprawdzenie zwłaszcza funkcji odbioru. <br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br /><br />using System.Text;<br />using System.Windows.Forms;<br />using ZedGraph;<br />using System.IO.Ports;<br /><br /><br />namespace AplikacjaPracaDyplomowa<br />{<br />   <br />    public partial class Form1 : Form<br />    {<br />        //Zmienne globalne<br />        <br />        byte&#91;&#93; temp = new byte&#91;1&#93;;<br />        //Wybór portu COM<br />        int index;<br />        //Zmienne do przesyłu.<br />        int F23, F24, F25, F26, F27, F28, F29, F30, F31;<br />        int F32, F33, F34, F35, F36, F37, F38, F39, F40;<br />        /// &lt;summary&gt;<br />        /// //////////////////////////////////////////<br />        /// &lt;/summary&gt;<br />        string F16;<br />        double F17;<br />        int F18;<br />        int F19;<br />        int F20;<br />        int F22;<br />        byte&#91;&#93; F21= new byte&#91;10&#93;; //Tutaj zapisane są pojedyncze wartosci z pól od F1 do F10;<br />       <br />        //Zmienienne do kumunikacji:<br />        int&#91;&#93; wart_ADC = new int&#91;10&#93;;<br />        int flaga_startu = 0;<br />        int flaga_synch = 0;<br />        int flaga_konca = 0;<br />        byte&#91;&#93; flaga_UC = {0xFF}; //Flaga do uC info o jednym pomiarze<br />        byte&#91;&#93; flaga_UC2 = { 0xFE };<br />        byte&#91;&#93; wlacz = new byte&#91;1&#93;;<br />        byte&#91;&#93; wylacz = new byte&#91;1&#93;;<br />        double&#91;&#93; przelicz = new double&#91;10&#93;;<br />        double&#91;&#93; do_wykresu = new double&#91;10&#93;;<br /><br />        //lista próbek<br />        Timer t1 = new Timer();  //tworzenie timera<br />        PointPairList list1 = new PointPairList(); //ilość pamiętanych próbek<br /><br />        public Form1()<br />        {<br />            InitializeComponent();<br /><br />        }<br /><br />        private void Form1_Load(object sender, EventArgs e)<br />        {<br />            GraphPane myPane = zedGraphControl1.GraphPane;<br />            myPane.Title.Text = &quot;Charakterystyka częstotliwościowa układu badanego.&quot;;<br />            myPane.XAxis.Title.Text = &quot;Częstotliwość &#91;Hz&#93;&quot;;<br />            myPane.YAxis.Title.Text = &quot;Amplituda &#91;V&#93;&quot;;<br />            // Nazwa krzywej, lista punktów, kolor krzywej, typ punktów<br />            LineItem curve1 = myPane.AddCurve(&quot;Freq1&quot;, list1, Color.Blue, SymbolType.None);<br />           <br />            //skala X<br />            myPane.XAxis.Scale.Min = 0;        // początek wykresu<br />            myPane.XAxis.Scale.Max = 2000;       // koniec wykresu<br />            myPane.XAxis.Scale.MinorStep = 50;  // mała podzialka<br />            myPane.XAxis.Scale.MajorStep = 100;  //<br /><br />            //skala Y<br />            myPane.YAxis.Scale.Min = 0;        // początek wykresu<br />            myPane.YAxis.Scale.Max = 5;       // koniec wykresu<br />            myPane.YAxis.Scale.MinorStep = 0.1;  // mała podzialka<br />            myPane.YAxis.Scale.MajorStep = 0.5;  //<br /><br />            //Co zgaszamy a co aktywujemy<br />            show.Enabled = false;<br />            //Kontrolne wysłanie bitów.<br />        }<br />        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)<br />        {<br />            if (flaga_synch == 0)<br />            {<br />                flaga_startu = serialPort1.ReadByte(); // Muszę wysyłać dwabajty zawsze jeden przypadkowy byleby nie 255 lub 254<br />                flaga_konca = serialPort1.ReadByte(); //drugi natomiast z ta opcją co potrzebuje<br />                if (flaga_startu == 255) //zmienna przetrzymująca info o tym, że można kojelną serię rozpoczynać<br />                {<br /><br />                    start.Enabled = true;<br /><br />                }<br />                if (flaga_konca == 254)<br />                {<br />                    flaga_synch = 1;<br />                }<br />            }<br />            if (flaga_synch == 1)<br />            {<br /><br />                wart_ADC&#91;0&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;1&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;2&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;3&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;4&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;5&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;6&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;7&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;8&#93; = serialPort1.ReadByte();<br />                wart_ADC&#91;9&#93; = serialPort1.ReadByte();<br /><br />                flaga_startu = 1;<br />                flaga_synch = 0;<br />               <br />            }<br />            <br />           <br /><br />            <br />        }<br />        private void PomSer_CheckedChanged(object sender, EventArgs e)<br />        {<br />            if (PomSer.Checked)<br />            {<br />                F1.Enabled = true;<br />                F1_text.Enabled = true;<br />                F2.Enabled = true;<br />                F2_text.Enabled = true;<br />                F3.Enabled = true;<br />                F3_text.Enabled = true;<br />                F4.Enabled = true;<br />                F4_text.Enabled = true;<br />                F5.Enabled = true;<br />                F5_text.Enabled = true;<br />                F6.Enabled = true;<br />                F6_text.Enabled = true;<br />                F7.Enabled = true;<br />                F7_text.Enabled = true;<br />                F8.Enabled = true;<br />                F8_text.Enabled = true;<br />                F9.Enabled = true;<br />                F9_text.Enabled = true;<br />                F10.Enabled = true;<br />                F10_text.Enabled = true;<br />            }<br />            else<br />            {<br />                F1.Enabled = true;<br />                F1_text.Enabled = true;<br />                F2.Enabled = false;<br />                F2_text.Enabled = false;<br />                F3.Enabled = false;<br />                F3_text.Enabled = false;<br />                F4.Enabled = false;<br />                F4_text.Enabled = false;<br />                F5.Enabled = false;<br />                F5_text.Enabled = false;<br />                F6.Enabled = false;<br />                F6_text.Enabled = false;<br />                F7.Enabled = false;<br />                F7_text.Enabled = false;<br />                F8.Enabled = false;<br />                F8_text.Enabled = false;<br />                F9.Enabled = false;<br />                F9_text.Enabled = false;<br />                F10.Enabled = false;<br />                F10_text.Enabled = false;<br />            }<br />        }<br />       <br /><br /><br />        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)<br />        {<br />            index = comboBox1.SelectedIndex;<br />        }<br /><br />        private void start_Click(object sender, EventArgs e)<br />        {<br />            if (serialPort1.IsOpen)<br />            {<br />                if (((F1_text.Text == &quot;&quot;) &amp;&amp; (PomSer.Checked==false))||((F10_text.Text == &quot;&quot;) &amp;&amp;(PomSer.Checked==true)))<br />                {<br />                    MessageBox.Show(&quot;Wpisz wartość/wartości i naciśnij PRZEŚLIJ&quot;, &quot;Analizator częstotliwościowy&quot;,<br />                    MessageBoxButtons.OK, MessageBoxIcon.Information);<br />                }<br />                if(flaga_synch == 0){<br /><br />                    if (PomSer.Checked == false)<br />                    {<br />                        serialPort1.Write(flaga_UC, 0, 1); //Informacja o ilosci pomiarow<br />                    }<br />                    else<br />                    {<br />                        serialPort1.Write(flaga_UC2, 0, 1); //Informacja o ilosci pomiarow<br />                        serialPort1.Write(F21, 0, 10);<br />                        start.Enabled = false;<br />                    }<br />                }<br />            }<br />            if (!(serialPort1.IsOpen))<br />            {<br />                MessageBox.Show(&quot;Wybierz port COM&quot;, &quot;Analizator częstotliwościowy&quot;,<br />                MessageBoxButtons.OK, MessageBoxIcon.Information);<br />            }<br />        }<br /><br />        private void open_serial_Click(object sender, EventArgs e)<br />        {<br />            serialPort1.Close();<br />            for (int i = 0; i &lt; 11; i++)<br />                if (index == i)<br />                {<br />                    string lol = &quot;COM&quot; + i;<br />                    <br />                    this.serialPort1.PortName = lol;<br /><br />                    if (serialPort1.IsOpen)<br />                    {<br />                        serialPort1.Close();<br />                    }<br />                    close_serial.Enabled = true;<br />                    open_serial.Enabled = false;<br />                    serialPort1.Open();<br />                }<br />        }<br /><br />        private void close_serial_Click(object sender, EventArgs e)<br />        {<br />            serialPort1.DiscardInBuffer();<br />            serialPort1.Close();<br />            open_serial.Enabled = true;<br />            close_serial.Enabled = false;<br />        }<br />         <br />        private void save_Click(object sender, EventArgs e)<br />        {<br />            if (PomSer.Checked == true)<br />            {<br /><br /><br />                //Działająca konwersja zmiennej typu string na byte<br />                int F22 = int.Parse(F1_text.Text);<br />                F22 = F22 / 10;<br />                F21&#91;0&#93; = Convert.ToByte(F22);<br />                //2<br />                int F23 = int.Parse(F2_text.Text);<br />                F23 = F23 / 10;<br />                F21&#91;1&#93; = Convert.ToByte(F23);<br />                //3<br />                int F24 = int.Parse(F3_text.Text);<br />                F24 = F24 / 10;<br />                F21&#91;2&#93; = Convert.ToByte(F24);<br />                //4<br />                int F25 = int.Parse(F4_text.Text);<br />                F25 = F25 / 10;<br />                F21&#91;3&#93; = Convert.ToByte(F25);<br />                //5<br />                int F26 = int.Parse(F5_text.Text);<br />                F26 = F26 / 10;<br />                F21&#91;4&#93; = Convert.ToByte(F26);<br />                //6<br />                int F27 = int.Parse(F6_text.Text);<br />                F27 = F27 / 10;<br />                F21&#91;5&#93; = Convert.ToByte(F27);<br />                //7<br />                int F28 = int.Parse(F7_text.Text);<br />                F28 = F28 / 10;<br />                F21&#91;6&#93; = Convert.ToByte(F28);<br />                //8<br />                int F29 = int.Parse(F8_text.Text);<br />                F29 = F29 / 10;<br />                F21&#91;7&#93; = Convert.ToByte(F29);<br />                //9<br />                int F30 = int.Parse(F9_text.Text);<br />                F30 = F30 / 10;<br />                F21&#91;8&#93; = Convert.ToByte(F30);<br />                //10<br />                int F31 = int.Parse(F10_text.Text);<br />                F31 = F31 / 10;<br />                F21&#91;9&#93; = Convert.ToByte(F31);<br />                          <br />                <br />            }<br />            else <br />            {<br />                int F22 = int.Parse(F1_text.Text);<br />                F22 = F22 / 10;<br />                F21&#91;0&#93; = Convert.ToByte(F22);<br />                <br />            }<br /><br />            /*Przetwarzanie danych*/<br />        }<br /><br />        private void show_Click(object sender, EventArgs e)<br />        {<br />            if (flaga_startu == 1)<br />            {<br />                show.Enabled = true;<br />                for (int i = 0; i &lt; 10; i++)<br />                {<br />                    przelicz&#91;i&#93; = Convert.ToDouble(wart_ADC&#91;i&#93;);<br />                    do_wykresu&#91;i&#93; = (przelicz&#91;i&#93; * 4.93) / 1024;<br /><br />                }<br /><br />            }<br />        }<br />        <br />        <br /><br />        <br /><br />        <br />       <br /><br /><br />       <br />    }<br />}[/syntax]<br /><br />Najbardziej jednak zależy mi na wyjaśnieniu jak to dokładnie działa, jak interpretować bufory w PC i jak te dane są przyjmowane, generalnie jak to wygląda z komunikacją szeregową.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2079">adi19887</a> — 11 gru 2013, o 21:16</p><hr />
]]></content>
</entry>
</feed>