<?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=50&amp;t=6248&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-20T19:52:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=6248&amp;mode</id>
<entry>
<author><name><![CDATA[Lukasz_wat]]></name></author>
<updated>2014-03-20T19:52:30+01:00</updated>
<published>2014-03-20T19:52:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=75077#p75077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=75077#p75077"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=75077#p75077"><![CDATA[
Mam taki problem z którym walczę od jakiegoś czasu.<br /><br />Robię aplikację w Builder C++ i chciałbym napływające dane(odczyty rejestrów czujnika) z UART zapisywać do pliku.<br />Stworzyłem przycisk Button i w obsłudze zdarzenia umieściłem nastepujący kod:<br /><br /><br />[syntax=cpp]RichEdit1-&gt;Lines-&gt;SaveToFile(&quot;c:\\katalog\\plik.txt&quot;);[/syntax]<br /><br />i stworzył plik ale w nim nie ma wartości tylko(śmieci):<br />{\rtf1\ansi\ansicpg1250\deff0\deflang1045{\fonttbl{\f0\fnil\fcharset0 Arial;}}<br />\viewkind4\uc1\pard\b\fs16  0\tab  1\tab  255\tab  252\tab\'10<br />\par }<br /> <br />mógłby ktoś pomóc?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1945">Lukasz_wat</a> — 20 mar 2014, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2014-03-10T17:35:35+01:00</updated>
<published>2014-03-10T17:35:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73704#p73704</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73704#p73704"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73704#p73704"><![CDATA[
Kolego, a co z tą biblioteką COMport? <br /><br />Mój program się kompiluje. Ale czy działa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 10 mar 2014, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz_wat]]></name></author>
<updated>2014-03-10T17:54:11+01:00</updated>
<published>2014-03-10T16:36:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73698#p73698</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73698#p73698"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73698#p73698"><![CDATA[
Już sam nie wiem co jest grane, cały czas jest to samo..! tzn, &quot;Niewłaściwa nazwa portu..&quot;<br /><br />Dzięki Mikandrzej, Twój program kompiluje się bez problemu;)<br /><br />A sprawdziłem jeszcze taki przypadek:<br />i częściowo coś się udało, tzn. jak &quot;wyłącze&quot; wysyłanie jakiegoś znaku do uC tylko odbieram je bez żadnego zapytanie to programy w borlandzie chodzą, a jak już zrobię, że najpierw wysyłam np. znak 1 to nic nie odbieram..?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1945">Lukasz_wat</a> — 10 mar 2014, o 16:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2014-03-09T23:25:49+01:00</updated>
<published>2014-03-09T23:25:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73609#p73609</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73609#p73609"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73609#p73609"><![CDATA[
Kolego uprościłem trochę ten kod, ale funkcje uruchamiające zostawiłem takie same. Zrób sobie dwa przyciski i uruchom kod:<br />[syntax=cpp]//---------------------------------------------------------------------------<br /><br />#include &lt;vcl.h&gt;<br />#pragma hdrstop<br /><br />#include &quot;Unit1.h&quot;<br />//---------------------------------------------------------------------------<br />#pragma package(smart_init)<br />#pragma resource &quot;*.dfm&quot;<br />TForm1 *Form1;<br /><br />#define cbOutQueue 1024       //rozmiar bufora danych wyj?ciowych<br />#define cbInQueue  1024       //rozmiar bufora danych wej?ciowych<br /><br />  LPCTSTR sbuffer1 = &quot;Zamkni?cie aplikacji&quot;;<br />    LPCTSTR sbuffer2 = &quot;Uwaga !&quot;;<br />    LPCTSTR sbuffer3 = &quot; ??cze b?dzie monitorowane do czasu&quot;<br />                           &quot; odebrania znaku.&quot;;<br />    LPCTSTR sbuffer4 = &quot;Zawarto?? pliku lub okna zosta?a&quot;<br />                            &quot; zmieniona. Zapisa? zmiany ?&quot;;<br />    LPCTSTR sbuffer5 = &quot;Niew?a?ciwa nazwa portu lub port jest&quot;<br />                           &quot; aktywny.&quot;;<br />    LPCTSTR sbuffer6 = &quot;Nie wybrano pliku do transmisji.&quot;;<br /><br />AnsiString newFile;          // przechowuje nazw? pliku<br />    HFILE   hfile;               // identyfikator pliku<br />    char    bufferOut&#91;cbOutQueue&#93;; // bufor danych wyj?ciowych<br />    char    bufferIn&#91;cbInQueue&#93;;   // bufor danych wej?ciowych<br />    DWORD   bytesRead        ;     // liczba bajtów do czytania<br />    HANDLE  hCommDev;          // identyfikator portu<br />    LPCTSTR portName;      // wska?nik do nazwy portu<br />    DCB     dcb;        // struktura kontroli portu szeregowego<br />    DWORD   fdwEvtMask; // informacja o aktualnym stanie transmisji<br />    COMSTAT comstat;       // dodatkowa informacja o zasobach portu<br />    DWORD   errors;     // reprezentuje typ ewentualnego b??du<br />    BOOL bResult ;      // zmienna boolowska<br /><br />    <br /><br />//---------------------------------------------------------------------------<br />__fastcall TForm1::TForm1(TComponent* Owner)<br />        : TForm(Owner)<br />{<br />}<br />//---------------------------------------------------------------------------<br /><br />void __fastcall TForm1::Button1Click(TObject *Sender)<br />{<br />  portName = &quot;COM3&quot;;<br />  hCommDev = CreateFile(portName, GENERIC_READ |<br />                          GENERIC_WRITE, 0, NULL,<br />                          OPEN_EXISTING, 0, NULL);<br /><br />    if (hCommDev != INVALID_HANDLE_VALUE)<br />      // sprawdza, czy port jest otwarty prawid?owo<br />      {<br />        SetupComm(hCommDev, cbInQueue, cbOutQueue);<br />        dcb.DCBlength = sizeof(dcb);<br />        GetCommState(hCommDev, &amp;dcb);<br /><br />           dcb.BaudRate = CBR_9600;<br /><br />        dcb.Parity = NOPARITY;        // ustawienie parzysto?ci<br />        dcb.StopBits = ONESTOPBIT;     // bity stopu<br />        dcb.ByteSize = 8;              // bity danych<br /><br />        //-przyk?adowe ustawienia flag steruj?cych DCB-<br />        dcb.fParity = TRUE;<br />        dcb.fDtrControl = DTR_CONTROL_DISABLE;<br />        dcb.fRtsControl = RTS_CONTROL_DISABLE;<br />        dcb.fOutxCtsFlow = FALSE;<br />        dcb.fOutxDsrFlow = FALSE;<br />        dcb.fDsrSensitivity = FALSE;<br />        dcb.fAbortOnError = FALSE;<br />        dcb.fOutX = FALSE;<br />        dcb.fInX = FALSE;<br />        dcb.fErrorChar = FALSE;<br />        dcb.fNull = FALSE;<br />        dcb.EofChar = FALSE;<br />        SetCommState(hCommDev, &amp;dcb);<br />      }<br />      else<br />        {<br />         switch ((int)hCommDev)<br />           {<br />            case IE_BADID:<br />              MessageBox(NULL, sbuffer5, sbuffer2, MB_OK);<br />             break;<br />           };<br />         }<br /><br />}<br />//---------------------------------------------------------------------------<br /><br /><br />BOOL __fastcall TForm1::writeSerialPort(HANDLE hCommDev,<br />                                        DWORD numberOfBytesToWrite)<br />{<br />    DWORD numberOfBytesWritten;<br /><br />    GetCommMask(hCommDev, &amp;fdwEvtMask);<br />    SetCommMask(hCommDev, EV_TXEMPTY);<br /><br />    if (WriteFile(hCommDev, &amp;bufferOut&#91;0&#93;, numberOfBytesToWrite,<br />        &amp;numberOfBytesWritten, NULL) == TRUE)<br />        return WaitCommEvent(hCommDev, &amp;fdwEvtMask, NULL);<br />       else<br />         return FALSE;<br />}<br /><br />void __fastcall TForm1::Button2Click(TObject *Sender)<br />{<br /> strcpy(bufferOut, &quot;dziala :)&quot;);<br />       writeSerialPort(hCommDev, strlen(bufferOut));<br />       FlushFileBuffers(hCommDev);<br /><br />}<br />//---------------------------------------------------------------------------[/syntax]<br /><br /><br />i oczywiście Unit1.h z dodaną deklaracją funkcji:<br />[syntax=cpp]//---------------------------------------------------------------------------<br /><br />#ifndef Unit1H<br />#define Unit1H<br />//---------------------------------------------------------------------------<br />#include &lt;Classes.hpp&gt;<br />#include &lt;Controls.hpp&gt;<br />#include &lt;StdCtrls.hpp&gt;<br />#include &lt;Forms.hpp&gt;<br />//---------------------------------------------------------------------------<br />class TForm1 : public TForm<br />{<br />__published:// IDE-managed Components<br />        TButton *Button1;<br />        TButton *Button2;<br />        void __fastcall Button1Click(TObject *Sender);<br />        BOOL __fastcall writeSerialPort(HANDLE hCommDev,<br />                                        DWORD numberOfBytesToWrite);<br />        void __fastcall Button2Click(TObject *Sender);<br />private:// User declarations<br />public:// User declarations<br />        __fastcall TForm1(TComponent* Owner);<br />};<br />//---------------------------------------------------------------------------<br />extern PACKAGE TForm1 *Form1;<br />//---------------------------------------------------------------------------<br />#endif[/syntax]<br /><br />U mnie ruszyło z kopyta, dane się ładnie wysyłają. <br /><br />Diagnoza:<br /><br />Uruchamiasz BCB z uprawnieniami administratora?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 9 mar 2014, o 23:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz_wat]]></name></author>
<updated>2014-03-09T19:59:37+01:00</updated>
<published>2014-03-09T19:59:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73580#p73580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73580#p73580"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73580#p73580"><![CDATA[
Mikandrzej a mógłbyś uruchomić ten program na swoim PC? Ciekawy jestem czy u Ciebie połączy się z jakimś COMem? <br />Albo czy mógłbyś mi podesłać jakiś programik, który u Ciebie działa, sprawdziłbym u siebie..?<br /><br />Bo próbowałem już kilku kombinacji, np. \\.\COM6  i też nie działa<br /><br /><br />Pzdr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1945">Lukasz_wat</a> — 9 mar 2014, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2014-03-07T22:42:42+01:00</updated>
<published>2014-03-07T22:42:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73377#p73377</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73377#p73377"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73377#p73377"><![CDATA[
Daj znać jak poszło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 7 mar 2014, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz_wat]]></name></author>
<updated>2014-03-07T09:17:48+01:00</updated>
<published>2014-03-07T09:17:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73287#p73287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73287#p73287"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73287#p73287"><![CDATA[
Nie tylko z COM6 ale z każdym innym też..?<br /><br />terminalem łączę się bez problemu. Dzięki za radę, pobieram COmport..<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pzdr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1945">Lukasz_wat</a> — 7 mar 2014, o 09:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2014-03-06T20:03:39+01:00</updated>
<published>2014-03-06T20:03:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73222#p73222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73222#p73222"/>
<title type="html"><![CDATA[Re: Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73222#p73222"><![CDATA[
Kolego a dzieje się tak tylko z portem COM6??<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 15 minutach ]</span></strong><br /><br />Dopiszę, jeżeli tylko z tym portem, to sprawdź po pierwsze w menedżerze czy taki port jest, potem zobacz jakimś terminalem czy da się z nim normalnie połączyć.<br /><br />Jeśli to nie pomoże, to ściagnij bibliotekę comport do C++ buildera. Masz wtedy eventy z odebranymi danymi i to jeszcze z wbudowaną obsługą pakietów (wpisujesz, że każdy pakiet kończy się np &quot;0xAABB&quot; i wtedy jak terminal taki znak dostanie, to do funkcji masz przekazywany cały tekst przed tym tokenem).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 6 mar 2014, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz_wat]]></name></author>
<updated>2014-03-06T09:28:40+01:00</updated>
<published>2014-03-06T09:28:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73182#p73182</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73182#p73182"/>
<title type="html"><![CDATA[Aplikacja okienkowa w Builder C++ RS232 UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6248&amp;p=73182#p73182"><![CDATA[
Witam,<br /><br />Robię aplikację okienkową w Builder C++ do komunikacji przez UART tzn. wysyłam znak z PC i odbieram dane z uC.<br />Na początku próbuję uruchomić gotowe programy z książki &quot;RS232 Programowanie praktyczne&quot; Daniluka i za każdym razem wyskakuje mi przy otwieraniu COM6 następujący komunikat<br /> &quot;Niewłaściwa nazwa portu lub port jest aktywny&quot;<br /><br />Czy ktoś spotkał się już z takim problemem?<br /><br />Podaję kod:<br />[syntax=cpp]#include &lt;vcl.h&gt;<br />#pragma hdrstop<br />#include &quot;Unit_05_09.h&quot;<br />#pragma package(smart_init)<br />#pragma resource &quot;*.dfm&quot;<br /><br />#define cbOutQueue 1024       //rozmiar bufora danych wyjściowych<br />#define cbInQueue  1024       //rozmiar bufora danych wejściowych<br />#define TIMER_INTERVAL 1      //przedział czasu próbkowania Timera<br /><br />TForm1 *Form1;<br /><br />    AnsiString newFile;          // przechowuje nazwę pliku<br />    HFILE   hfile;               // identyfikator pliku<br />    char    bufferOut&#91;cbOutQueue&#93;; // bufor danych wyjściowych<br />    char    bufferIn&#91;cbInQueue&#93;;   // bufor danych wejściowych<br />    DWORD   bytesRead        ;     // liczba bajtów do czytania<br />    HANDLE  hCommDev;          // identyfikator portu<br />    LPCTSTR portName;      // wskaźnik do nazwy portu<br />    DCB     dcb;        // struktura kontroli portu szeregowego<br />    DWORD   fdwEvtMask; // informacja o aktualnym stanie transmisji<br />    COMSTAT comstat;       // dodatkowa informacja o zasobach portu<br />    DWORD   errors;     // reprezentuje typ ewentualnego błędu<br />    BOOL bResult ;      // zmienna boolowska<br /><br />    LPCTSTR sbuffer1 = &quot;Zamknięcie aplikacji&quot;;<br />    LPCTSTR sbuffer2 = &quot;Uwaga !&quot;;<br />    LPCTSTR sbuffer3 = &quot; Łącze będzie monitorowane do czasu&quot;<br />                           &quot; odebrania znaku.&quot;;<br />    LPCTSTR sbuffer4 = &quot;Zawartość pliku lub okna została&quot;<br />                            &quot; zmieniona. Zapisać zmiany ?&quot;;<br />    LPCTSTR sbuffer5 = &quot;Niewłaściwa nazwa portu lub port jest&quot;<br />                           &quot; aktywny.&quot;;<br />    LPCTSTR sbuffer6 = &quot;Nie wybrano pliku do transmisji.&quot;;<br />//--------------------------------------------------------------<br />__fastcall TForm1::TForm1(TComponent* Owner)<br />        : TForm(Owner)<br />{<br />}<br />//--------------------------------------------------------------<br />BOOL __fastcall TForm1::closeSerialPort(HANDLE hCommDev)<br />{<br />    return CloseHandle(hCommDev);<br />}<br />//--------------------------------------------------------------<br />BOOL __fastcall TForm1::writeSerialPort(HANDLE hCommDev,<br />                                        DWORD numberOfBytesToWrite)<br />{<br />    DWORD numberOfBytesWritten;<br /><br />    GetCommMask(hCommDev, &amp;fdwEvtMask);<br />    SetCommMask(hCommDev, EV_TXEMPTY);<br /><br />    if (WriteFile(hCommDev, &amp;bufferOut&#91;0&#93;, numberOfBytesToWrite,<br />        &amp;numberOfBytesWritten, NULL) == TRUE)<br />        return WaitCommEvent(hCommDev, &amp;fdwEvtMask, NULL);<br />       else<br />         return FALSE;<br />}<br />//--------------------------------------------------------------<br />BOOL __fastcall TForm1::readSerialPort(HANDLE hCommDev, LPDWORD<br />                                      lpNumberOfBytesRead, DWORD bufSize)<br />{<br />    DWORD numberOfBytesToRead;<br /><br />   *lpNumberOfBytesRead = 0;<br /><br />    ClearCommError(hCommDev, &amp;errors ,&amp;comstat);<br /><br />    if (comstat.cbInQue &gt; 0) {<br />        if (comstat.cbInQue &gt; bufSize)<br />           numberOfBytesToRead = bufSize;<br />           else<br />              numberOfBytesToRead = comstat.cbInQue;<br />    }<br />    return ReadFile(hCommDev, &amp;bufferIn&#91;0&#93;, numberOfBytesToRead,<br />                    lpNumberOfBytesRead, NULL);<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CloseCommClick(TObject *Sender)<br />{<br />     Timer1-&gt;Enabled = FALSE;<br />     CheckFileSave();<br />     closeSerialPort(hCommDev);<br />     Application-&gt;Terminate();<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CheckFileSave(void)<br />{<br />     if (RichEdit1-&gt;Modified) {<br />        switch(MessageBox(NULL, sbuffer4, sbuffer2,<br />                          MB_YESNOCANCEL | MB_ICONQUESTION))<br />         {<br />           case ID_YES    : FileSaveClick(this);<br />           case ID_CANCEL : Abort();<br />         };<br />     }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::FormCreate(TObject *Sender)<br />{<br />     OpenDialog1-&gt;InitialDir = ExtractFilePath(ParamStr(0));<br />     OpenDialog1-&gt;Filter =<br />     &quot;*.dat , *.txt, *.cpp, *.c | *.dat; *.txt; *.cpp; *.c&quot;;<br />     SaveDialog1-&gt;InitialDir = OpenDialog1-&gt;InitialDir;<br />     SaveDialog1-&gt;Filter = &quot;*.*|*.*&quot;;<br /><br />     Timer1-&gt;Enabled = FALSE;<br />     Timer1-&gt;Interval = TIMER_INTERVAL;<br />     CheckComm-&gt;Enabled = FALSE;<br /><br />     FileOpen-&gt;Hint = &quot;Otwórz plik&quot;;<br />     FileOpen-&gt;ShowHint = TRUE;<br />     FileSave-&gt;Hint = &quot;Zapisz&quot;;<br />     FileSave-&gt;ShowHint = TRUE;<br />     CopyText-&gt;Hint = &quot;Kopiuj&quot;;<br />     CopyText-&gt;ShowHint = TRUE;<br />     PasteText-&gt;Hint = &quot;Wklej&quot;;<br />     PasteText-&gt;ShowHint = TRUE;<br />     CutText-&gt;Hint =   &quot;Wytnij&quot;;<br />     CutText-&gt;ShowHint = TRUE;<br />     CleanBuffers-&gt;Hint = &quot;Wyczyść bufory&quot;;<br />     CleanBuffers-&gt;ShowHint = TRUE;<br />     ReceiveFileSave-&gt;Hint = &quot;Zapisz otrzymane&quot;;<br />     ReceiveFileSave-&gt;ShowHint = TRUE;<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::FileOpenClick(TObject *Sender)<br />{<br />     CheckFileSave();<br /><br />     if (OpenDialog1-&gt;Execute()) {<br />        RichEdit1-&gt;Lines-&gt;LoadFromFile(OpenDialog1-&gt;FileName);<br />        RichEdit1-&gt;Modified = FALSE;<br />        RichEdit1-&gt;ReadOnly =<br />                   OpenDialog1-&gt;Options.Contains(ofReadOnly);<br />     }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::FileSaveClick(TObject *Sender)<br />{<br />     if (! strcmp(newFile.c_str(), LoadStr(256).c_str()))<br />        SaveAs1Click(Sender);<br />        else {<br />           RichEdit1-&gt;Lines-&gt;SaveToFile(newFile);<br />           RichEdit1-&gt;Modified = FALSE;<br />        }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CopyTextClick(TObject *Sender)<br />{<br />     RichEdit1-&gt;CopyToClipboard();<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::PasteTextClick(TObject *Sender)<br />{<br />     RichEdit1-&gt;PasteFromClipboard();<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CutTextClick(TObject *Sender)<br />{<br />     RichEdit1-&gt;CutToClipboard();<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::UndoClick(TObject *Sender)<br />{<br />     if (RichEdit1-&gt;HandleAllocated())<br />        SendMessage(RichEdit1-&gt;Handle, EM_UNDO, 0, 0);<br /><br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::SelectAllClick(TObject *Sender)<br />{<br />     RichEdit1-&gt;SelectAll();<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CleanBuffersClick(TObject *Sender)<br />{<br />    for (int i = 0; i &lt; cbInQueue; i ++) {<br />        bufferIn&#91;i&#93; = NULL;<br />        RichEdit1-&gt;Text = bufferIn;<br />    }<br />    for (int i = 0; i &lt; cbOutQueue; i ++) {<br />        bufferOut&#91;i&#93; = NULL;<br />        RichEdit2-&gt;Text = bufferOut;<br />    }<br />    //memset(bufferOut, 0, cbOutQueue);<br />    //memset(bufferIn, 0, cbInQueue);<br />    ProgressBar1-&gt;Max = 0;<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::OpenCommClick(TObject *Sender)<br />{<br />    if (CheckBox1-&gt;Checked == TRUE)         // wybór portu<br />        portName = &quot;COM1&quot;;<br />    if (CheckBox2-&gt;Checked == TRUE)<br />        portName = &quot;COM2&quot;;<br />        if (CheckBox5-&gt;Checked == TRUE)<br />        portName = &quot;COM6&quot;;<br /><br />    hCommDev = CreateFile(portName, GENERIC_READ |<br />                          GENERIC_WRITE, 0, NULL,<br />                          OPEN_EXISTING, 0, NULL);<br /><br />    if (hCommDev != INVALID_HANDLE_VALUE)<br />      // sprawdza, czy port jest otwarty prawidłowo<br />      {<br />        SetupComm(hCommDev, cbInQueue, cbOutQueue);<br />        dcb.DCBlength = sizeof(dcb);<br />        GetCommState(hCommDev, &amp;dcb);<br /><br />        if (CheckBox3-&gt;Checked == TRUE)      // wybór prędkości<br />           dcb.BaudRate = CBR_1200;<br />        if (CheckBox4-&gt;Checked == TRUE)<br />           dcb.BaudRate = CBR_19200;<br />           if (CheckBox6-&gt;Checked == TRUE)<br />           dcb.BaudRate = CBR_9600;<br /><br />        dcb.Parity = NOPARITY;        // ustawienie parzystości<br />        dcb.StopBits = ONESTOPBIT;     // bity stopu<br />        dcb.ByteSize = 8;              // bity danych<br /><br />        //-przykładowe ustawienia flag sterujących DCB-<br />        dcb.fParity = TRUE;<br />        dcb.fDtrControl = DTR_CONTROL_DISABLE;<br />        dcb.fRtsControl = RTS_CONTROL_DISABLE;<br />        dcb.fOutxCtsFlow = FALSE;<br />        dcb.fOutxDsrFlow = FALSE;<br />        dcb.fDsrSensitivity = FALSE;<br />        dcb.fAbortOnError = FALSE;<br />        dcb.fOutX = FALSE;<br />        dcb.fInX = FALSE;<br />        dcb.fErrorChar = FALSE;<br />        dcb.fNull = FALSE;<br />        dcb.EofChar = FALSE;<br />        SetCommState(hCommDev, &amp;dcb);<br />      }<br />      else<br />        {<br />         switch ((int)hCommDev)<br />           {<br />            case IE_BADID:<br />              MessageBox(NULL, sbuffer5, sbuffer2, MB_OK);<br />             break;<br />           };<br />         }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::SendFileClick(TObject *Sender)<br />{<br />   DWORD  fileSizeHigh;<br /><br />   CheckComm-&gt;Enabled = FALSE;<br />   ProgressBar1-&gt;Max = 0;<br /><br />   if ((_lopen(OpenDialog1-&gt;FileName.c_str(), OF_READ))!=<br />               HFILE_ERROR) {<br />      hfile =_lopen(OpenDialog1-&gt;FileName.c_str(), OF_READ );<br />      ProgressBar1-&gt;Max = GetFileSize((HANDLE)hfile,<br />                                      &amp;fileSizeHigh);<br /><br />      while (_lread(hfile, &amp;bufferOut&#91;0&#93;, 1)) {<br />         writeSerialPort(hCommDev, 1);<br />         ProgressBar1-&gt;StepIt();<br />      }<br />      _lclose(hfile);<br /><br />      FlushFileBuffers(hCommDev);<br />   }<br />    else<br />       MessageBox(NULL, sbuffer6, sbuffer2, MB_OK);<br /><br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::SendWrittenClick(TObject *Sender)<br />{<br />    if ((hCommDev != INVALID_HANDLE_VALUE) &amp;&amp; (hCommDev &gt; 0)) {<br />       CheckComm-&gt;Enabled = FALSE;<br />       strcpy(bufferOut, RichEdit1-&gt;Lines-&gt;Text.c_str());<br />       writeSerialPort(hCommDev, strlen(bufferOut));<br />       FlushFileBuffers(hCommDev);<br />    }<br />     else<br />        MessageBox(NULL, sbuffer5, sbuffer2, MB_OK);<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::ReceiveClick(TObject *Sender)<br />{<br />    if ((hCommDev != INVALID_HANDLE_VALUE) &amp;&amp; (hCommDev &gt; 0)) {<br />       CheckComm-&gt;Enabled = TRUE;<br />       RichEdit2-&gt;Clear();<br /><br />       GetCommMask(hCommDev, &amp;fdwEvtMask);<br />       SetCommMask(hCommDev, EV_RXCHAR );<br /><br />       bResult = readSerialPort(hCommDev, &amp;bytesRead, sizeof(bufferIn));<br /><br />       if (bResult &amp;&amp; bytesRead != 0) {<br />          RichEdit2-&gt;Text = bufferIn;<br />          Edit2-&gt;Text= &quot; Dane zostały przetransferowane.&quot;;<br />       }<br />    }<br />     else<br />        MessageBox(NULL, sbuffer5, sbuffer2, MB_OK);<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::OpenClick(TObject *Sender)<br />{<br />     CheckFileSave();<br /><br />     if (OpenDialog1-&gt;Execute()) {<br />        RichEdit1-&gt;Lines-&gt;LoadFromFile(OpenDialog1-&gt;FileName);<br />        RichEdit1-&gt;Modified = FALSE;<br />        RichEdit1-&gt;ReadOnly =<br />                   OpenDialog1-&gt;Options.Contains(ofReadOnly);<br />     }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::SaveAs1Click(TObject *Sender)<br />{<br />     if (SaveDialog1-&gt;Execute()) { // dane będą zapisywane w<br />                                   // formacie Rich !<br />        RichEdit1-&gt;Lines-&gt;SaveToFile(SaveDialog1-&gt;FileName);<br />        RichEdit1-&gt;Modified = FALSE;<br />     }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::TimerOnTimer(TObject *Sender)<br />{<br />    if (WaitCommEvent(hCommDev, &amp;fdwEvtMask, NULL) == TRUE) {<br />      // sprawdza czy nadszedł znak<br />       Beep();<br />       Edit2-&gt;Text = &quot; Transfer danych.&quot;;<br />       GetCommMask(hCommDev, &amp;fdwEvtMask);<br />       SetCommMask(hCommDev, EV_TXEMPTY);<br />       Timer1-&gt;Enabled = FALSE;<br />       CheckComm-&gt;Enabled = FALSE;<br />    }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::ReceiveFileSaveClick(TObject *Sender)<br />{<br />     if (SaveDialog1-&gt;Execute()) {<br />        RichEdit2-&gt;Lines-&gt;SaveToFile(SaveDialog1-&gt;FileName);<br />        RichEdit2-&gt;Modified = FALSE;<br />     }<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::NewClick(TObject *Sender)<br />{<br />     CheckFileSave();<br />     RichEdit1-&gt;Lines-&gt;Clear();<br />     RichEdit1-&gt;Modified = FALSE;<br />}<br />//--------------------------------------------------------------<br />void __fastcall TForm1::CheckCommClick(TObject *Sender)<br />{<br />    if (Application-&gt;MessageBox(sbuffer3 , sbuffer2,<br />                                MB_OKCANCEL) != IDOK) {<br />       CheckComm-&gt;Enabled = FALSE;<br />       Timer1-&gt;Enabled = FALSE;<br />       Abort();<br />    }<br />     else {<br />        Timer1-&gt;Enabled = TRUE;<br />        Edit2-&gt;Text = &quot;Łącze jest monitorowane.&quot;;<br />     }<br /><br />    /*if (MessageDlg(&quot; Łącze będzie monitorowane do czasu<br />                     &quot; odebrania znaku.&quot;, mtConfirmation,<br />              TMsgDlgButtons() &lt;&lt; mbYes &lt;&lt; mbNo, 0) == mrYes)<br />       {<br />        Timer1-&gt;Enabled = TRUE;<br />        Edit2-&gt;Text = &quot;Łącze jest minitorowane.&quot;;<br />       }<br />       else<br />         {<br />          CheckComm-&gt;Enabled = FALSE;<br />          Timer1-&gt;Enabled = FALSE;<br />          Abort();<br />         }*/<br />}<br />//-----------------------------------------------------------<br />void __fastcall TForm1::FormClose(TObject *Sender,<br />                                  TCloseAction &amp;Action)<br />{<br />    Action=caFree;<br />}<br />//------------------------------------------------------------<br />void __fastcall TForm1::FormCloseQuery(TObject *Sender,<br />                                       bool &amp;CanClose)<br />{<br />  if (RichEdit1-&gt;Modified)<br />    {<br />      switch(MessageBox(NULL, sbuffer1, sbuffer2,<br />                        MB_YESNOCANCEL | MB_ICONQUESTION))<br />      {<br />        case mrYes:<br />          CheckFileSave();<br />          break;<br />        case mrNo:<br />          CanClose=FALSE;<br />          break;<br />        case mrCancel:<br />          CanClose=FALSE;<br />          break;<br />      }<br />   }<br />}<br />//--------------------------------------------------------------[/syntax]<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1945">Lukasz_wat</a> — 6 mar 2014, o 09:28</p><hr />
]]></content>
</entry>
</feed>