🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #334593

Re: Port szeregowy, drukarka fiskalna znak NULL

#334593
From: Przemyslaw Rokicki
Date: Fri, 06 Jan 2012 14:32
100 lines
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-mail
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>

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