Witam,
Czy ktoś z forumowiczów programuje w C++ i ma przećwiczoną komunikację z tego języka z drukarkami i kasami fiskalnymi? Potrzebuję pomocy w starcie w tym temacie. Może znacie jakieś fajne publikacje które pomogły by mi wystartować w takim temacie. Będę wdzięczny za pomoc w starcie do programowania z obsługą kas i drukarek fiskalnych.
C++ [komunikacja z urządzeniami: drukarki i kasy fiskalne]
-
- Posty: 2
- Rejestracja: 03 maja 2017, 20:28
- cosik_ktosik
- Posty: 21403
- Rejestracja: 13 lis 2008, 01:17
- Lokalizacja: Szczecin
- Kontaktowanie:
C++ [komunikacja z urządzeniami: drukarki i kasy fiskalne]
W czystym C++? To już prędzej winapi C, drukowanie jest niczym pisanie na ekran tylko zamiast instancji ekranu jest ta od drukarki.
Przykładowy kawałek kodu dla drukowania z jakiegoś mojego starego programu
Przykładowy kawałek kodu dla drukowania z jakiegoś mojego starego programu
Kod: Zaznacz cały
BOOL PopPrntPrintFile (HINSTANCE hInst, HWND hwnd){
static DOCINFO di = { sizeof (DOCINFO) };
static PRINTDLG pd;
BOOL bSuccess;
TCHAR szJobName [64 + MAX_PATH];
WORD iColCopy, iNoiColCopy;
int yChar, iCharsPerLine, iLinesPerPage, iTotalLines,
iTotalPages, iPage, iLine, iLineNum, wys, szer;
TEXTMETRIC tm;
static HANDLE Object;
static char iPenStyle;
static int j, jest, ilosc;
static int decim, sign;
static char temptab[255];
static int strona;
BOOL ter=TRUE;
PTSTR pstrBuffer ;
pd.lStructSize = sizeof (PRINTDLG);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL;
pd.hDevNames = NULL;
pd.hDC = NULL;
pd.Flags = PD_ALLPAGES | PD_COLLATE | PD_RETURNDC | PD_NOSELECTION;
pd.nFromPage = 0;
pd.nToPage = 0;
pd.nMinPage = 0;
pd.nMaxPage = 0;
pd.nCopies = 1;
pd.hInstance = NULL;
pd.lCustData = 0L;
pd.lpfnPrintHook = NULL;
pd.lpfnSetupHook = NULL;
pd.lpPrintTemplateName = NULL;
pd.lpSetupTemplateName = NULL;
pd.hPrintTemplate = NULL;
pd.hSetupTemplate = NULL;
if (!PrintDlg (&pd))
return TRUE;
j=0;
ilosc=il_t2-1;
iTotalLines=ilosc;
GetTextMetrics (pd.hDC, &tm);
yChar = tm.tmHeight + tm.tmExternalLeading;
iCharsPerLine = GetDeviceCaps (pd.hDC, HORZRES) / tm.tmAveCharWidth;
iLinesPerPage = GetDeviceCaps (pd.hDC, VERTRES) / yChar;
iLinesPerPage-=6;
iTotalPages = (iTotalLines + iLinesPerPage - 1) / iLinesPerPage ;
szer=GetDeviceCaps (pd.hDC, HORZRES);
wys=GetDeviceCaps (pd.hDC, VERTRES);
EnableWindow (hwnd, FALSE);
bSuccess = TRUE;
bUserAbort = FALSE;
hDlgPrint = CreateDialog (hInst, TEXT ("PrintDialogBox"), hwnd, PrintDlgProc);
pstrBuffer = malloc (sizeof (TCHAR) * (iCharsPerLine + 1)) ;
SetAbortProc (pd.hDC, AbortProc);
GetWindowText (hwnd, szJobName, sizeof (szJobName));
di.lpszDocName = szJobName;
iPenStyle=PS_SOLID;
Object = SelectObject(pd.hDC, CreatePen(iPenStyle, 3, RGB(0, 0, 0)));
strona=1;
j=0;
jest=0;
/////////
if (StartDoc (pd.hDC, &di) > 0){
for (iColCopy = 0 ;iColCopy < ((WORD) pd.Flags & PD_COLLATE ? pd.nCopies : 1) ;iColCopy++){
i=0;
for (iPage = 0 ; iPage < iTotalPages ; iPage++){
for (iNoiColCopy = 0 ;iNoiColCopy < (pd.Flags & PD_COLLATE ? 1 : pd.nCopies);iNoiColCopy++){
// Start the page
if (StartPage (pd.hDC) < 0){
bSuccess = FALSE ;
break ;
}
// For each page, print the lines
for (iLine = 0 ; iLine < iLinesPerPage ; iLine++){
iLineNum = iLinesPerPage * iPage + iLine ;
if (iLineNum > iTotalLines)
break ;
*(int *) pstrBuffer = iCharsPerLine ;
TextOut (pd.hDC, (szer/15), yChar * (iLine+3), text2[iLine],
strlen(text2[iLine]));
}
if (EndPage (pd.hDC) < 0)
{
bSuccess = FALSE ;
break ;
}
if (bUserAbort)
break ;
}
if (!bSuccess || bUserAbort)
break ;
}
if (!bSuccess || bUserAbort)
break ;
}
}else
bSuccess = FALSE ;
if (bSuccess)
EndDoc (pd.hDC) ;
if (!bUserAbort){
EnableWindow (hwnd, TRUE) ;
DestroyWindow (hDlgPrint) ;
}
free (pstrBuffer) ;
DeleteDC (pd.hDC) ;
return bSuccess && !bUserAbort ;
}
Hotfix
Pozdrawiam, cosik_ktosik
Pozdrawiam, cosik_ktosik
-
- Posty: 2
- Rejestracja: 03 maja 2017, 20:28
C++ [komunikacja z urządzeniami: drukarki i kasy fiskalne]
Cześć, chce taki kod do obsługi drukarki spiąć z C++ w Visual Studio aplikacja okienkowa. A dałbyś radę mi to jakoś opisać?
Jak dla kompletnego Laika?
Jak dla kompletnego Laika?
-
- Posty: 3
- Rejestracja: 03 mar 2017, 12:37
C++ [komunikacja z urządzeniami: drukarki i kasy fiskalne]
Zależy o jakiej marce drukarek mowa. Dla drukarek Posnet można spokojnie napisać własny dll w C#. Łatwiej niż w C++. Mają dosyć dobrą dokumentację.
-
- Reklama
Wróć do „Webmastering i programowanie”
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości