Article View: pl.comp.lang.delphi
Article #334593Re: Port szeregowy, drukarka fiskalna znak NULL
From: Przemyslaw Rokicki
Date: Fri, 06 Jan 2012 14:32
Date: Fri, 06 Jan 2012 14:32
100 lines
4683 bytes
4683 bytes
On 6 Sty, 15:00, Arivald <NOSPAMariv...@interia.pl> wrote:
> W dniu 2012-01-06 14:36, Przemyslaw Rokicki pisze:
>
>
>
>
>
>
>
>
>
> > On 6 Sty, 14:01, PaSkol<DearthNOSPAMpas...@op.pl> wrote:
> >> W dniu 2012-01-06 13:30, G wny U ytkownik pisze:
>
> >>> query := pchar(s);
> >>> if (hCommDev<> INVALID_HANDLE_VALUE)
> >>> and (hCommDev> 0) then
> >>> begin
> >>> repeat
> >>> StrCopy(bufferOut, query);
> >>> FlushFileBuffers(hCommDev);
> >>> until (writeSerialPort(hCommDev, Strlen(bufferOut))<> FALSE);
> >>> end;
>
> >> Co to jest bufferOut? Bufor o ustalonej d ugo ci? Je li tak, to mo na
> >> wykona :
> >> Move(s[1], bufferOut, Min(Length(s), Length(bufferOut))
>
> >> Bo StrCopy (OIDP) kopiuje wg konwencji C, czyli do pierwszego #0;
>
> > nic to nie da o, do drukarki nie idzie ca y string bo nie ma zadnego
> > komunikatu.
> > Zreszt problem pewnie wyst puje na poziomie tworzenia stringa bo nie
> > wy wietla w showMessage jak pisa em wy ej.
>
> String jest dobry, sprawd Length(s) przed lini z "query := pchar(s);"
>
> ShowMessage Ci go nie wy wietli, ale z innego powodu. Po prostu
> ShowMessage u ywa TLabel do wy wietlania tekstu. A TLabel u ywa
> WM_SETTEXT i PChar do ustawienia tekstu, niejako pod aj c za konwencj
> C-string w, i owo 0 wewn trz bardzo mu przeszkadza.
>
> Koncepcja z Move jest jak najbardziej prawid owa, ale wywo anie Strlen()
> j niszczy. Strlen() dzia a na c-stringach, i liczy tylko do pierwszego
> zera.
>
> if (hCommDev <> INVALID_HANDLE_VALUE) and (hCommDev > 0) then
> begin
> repeat
> dataLength = Min(Length(s), Length(bufferOut));
> Move(s[1], bufferOut, dataLength);
> FlushFileBuffers(hCommDev);
> until (writeSerialPort(hCommDev, dataLength) <> FALSE);
> end;
>
Mistrzu jestes wielki, działą.
Funkcje brałem z książki
Od Pascala i c++ do delphi i buildera RS232C Daniluka.
A jak najszybciej odebrać odpowiedź drukarki (automatem, po wysłaniu
rozkazu) bez stosowaniu timerów i odczekiwania
zakladajac ze tym kodem wysylam:
> if (hCommDev <> INVALID_HANDLE_VALUE) and (hCommDev > 0) then
> begin
> repeat
> dataLength = Min(Length(s), Length(bufferOut));
> Move(s[1], bufferOut, dataLength);
> FlushFileBuffers(hCommDev);
> until (writeSerialPort(hCommDev, dataLength) <> FALSE);
> end;
ogólną funkcję do odczytywania mam taką (również z tej książki):
function readSerialPort(hCommDev: THANDLE; bufSize: DWORD): BOOL;
var
numberOfBytesRead: DWORD;
begin
Result:=false;
ClearCommError(hCommDev, errors, @comstat);
if (comstat.cbInQue > 0) then
begin
if (comstat.cbInQue > bufSize) then
numberOfBytesRead:=bufSize
else
numberOfBytesRead:=comstat.cbInQue;
Result:=ReadFile(hCommDev, bufferIn, numberOfBytesRead, bytesRead,
nil);
end;
end;
pozdrawiam
Technical Details
Message-ID:
<ea1faa3b-0771-40e0-a843-71a7057c3d1c@j10g2000vbe.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!news-hub.siol.net!novia!news-out.readnews.com!transit3.readnews.com!postnews.google.com!j10g2000vbe.googlegroups.com!not-for-mailReferences:
<f0fe9b14-3716-4ff0-a8b9-46d680215996@q11g2000vbq.googlegroups.com> <628157f7-940a-46dc-9570-eb77d6b8edba@m4g2000vbc.googlegroups.com> <je4rcp$4j5$1@news.dialog.net.pl> <db4d62e5-5b51-483a-be8a-1528682b9e51@q11g2000vbq.googlegroups.com> <je6rb4$4tr$1@inews.gazeta.pl> <18537ecf-ae37-4437-b084-e89a12840b0b@o14g2000vbo.googlegroups.com> <je6uso$660$1@news.dialog.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!news-hub.siol.net!novia!news-out.readnews.com!transit3.readnews.com!postnews.google.com!j10g2000vbe.googlegroups.com!not-for-mail From: Przemyslaw Rokicki <dumpingowiec@gmail.com> Newsgroups: pl.comp.lang.delphi Subject: Re: Port szeregowy, drukarka fiskalna znak NULL Date: Fri, 6 Jan 2012 06:32:21 -0800 (PST) Organization: http://groups.google.com Lines: 104 Message-ID: <ea1faa3b-0771-40e0-a843-71a7057c3d1c@j10g2000vbe.googlegroups.com> References: <f0fe9b14-3716-4ff0-a8b9-46d680215996@q11g2000vbq.googlegroups.com> <628157f7-940a-46dc-9570-eb77d6b8edba@m4g2000vbc.googlegroups.com> <je4rcp$4j5$1@news.dialog.net.pl> <db4d62e5-5b51-483a-be8a-1528682b9e51@q11g2000vbq.googlegroups.com> <je6rb4$4tr$1@inews.gazeta.pl> <18537ecf-ae37-4437-b084-e89a12840b0b@o14g2000vbo.googlegroups.com> <je6uso$660$1@news.dialog.net.pl> NNTP-Posting-Host: 178.180.226.10 Mime-Version: 1.0 X-Trace: posting.google.com 1325860704 24288 127.0.0.1 (6 Jan 2012 14:38:24 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 6 Jan 2012 14:38:24 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: j10g2000vbe.googlegroups.com; posting-host=178.180.226.10; posting-account=lMchpAoAAABKV6gjDB4abWP8l2p_RN6g User-Agent: G2/1.0 X-Google-Web-Client: true X-Google-Header-Order: UARELSCHNK X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7,gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit