Kod kreskowy

dział ogólny

Kod kreskowy

Nowy postprzez nvdante » sobota, 20 grudnia 2014, 21:28

Witam panowie!
Zastanawiam się nad napisaniem aplikacji, która drukuje kod kreskowy.
Ogólnie ujmując zasada jest taka, że np.: litera 'a' to:
10010110000 > (1)x1 (2)x0 (1)x1 (1)x0 (2)x1 (4)x0 > 1 2 1 1 2 4

W związku z tym, aby stworzyć kod kreskowy należy zrobić:
czarny pasek o szerokości 1,
biały pasek o szerokości 2,
czarny pasek o szerokości 1,
biały pasek o szerokości 1,
czarny pasek o szerokości 2,
biały pasek o szerokości 4.

Teraz pytanie brzmi: jak to "narysować" w programie konsolowym? Czy ktoś ma jakiekolwiek doświadczenie na tym polu?

Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez nvdante » niedziela, 21 grudnia 2014, 10:25

Panowie, może za bardzo zagmatwałem sprawę.
Przyjmując, że wiem jak to zrobić potrzebowałbym informacji jedynie o tym, jak rysować w programach konsolowych kreski o podanej ilości pixeli.
Czy ktoś wie, jak to zrobić?

0Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez polymorphism » niedziela, 21 grudnia 2014, 11:00

W konsoli piksele? Przecież to jest interface tekstowy. W "polskim" windowsie konsola działa w kodowaniu cp852, tam jest znak █, którym mógłbyś wykorzystać do "rysowania" kodu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Kod kreskowy

Nowy postprzez nvdante » niedziela, 21 grudnia 2014, 11:24

Czyli mówisz, że się da?
Tak na szybko znalazłem takie coś, ale nie miałem jeszcze chwili na testowanie:
KOD cpp:     UKRYJ  
#include <iostream>
#include <Windows.h>
 
int main() {    
 
    /* hide console window */
    ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
 
    /* Calling GetDC with argument 0 retrieves the desktop's DC */
    HDC hDC_Desktop = GetDC(0);
 
    /* Draw a simple blue rectangle on the desktop */
    RECT rect = { 20, 20, 200, 200 };
    HBRUSH blueBrush=CreateSolidBrush(RGB(0,0,255));
    FillRect(hDC_Desktop, &rect, blueBrush);
 
    Sleep(10);
    return 0;
}
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez polymorphism » niedziela, 21 grudnia 2014, 11:56

Czyli mówisz, że się da?

Mówię, że konsola to interfejs tekstowy, i rysowanie w taki sposób, jaki ma miejsce w zwykłym oknie, nie jest możliwe. Oczywiście możesz rysować po oknie konsoli wykorzystując GDI. Tylko jaki jest wtedy sens używania konsoli? Nie lepiej po prostu zrobić aplikację okienkową?

Co do rysowania znakiem █, w konsoli mogłoby to wyglądać tak: █████████. Nie wiem, czy o taki efekt Ci chodzi, ale nie sądzę, żebyś w trybie znakowym uzyskał coś lepszego.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Kod kreskowy

Nowy postprzez Cyfrowy Baron » niedziela, 21 grudnia 2014, 16:39

A jak kiedyś robiono gry dla systemu DOS? Przecież miały jakąś grafikę.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez polymorphism » niedziela, 21 grudnia 2014, 18:45

Przecież konsola to nie jest system DOS lub coś, co ten system ma symulować. To jest jedynie interfejs tekstowy umożliwiający zarządzanie systemem. Dlatego sugerowałem, że próba malowania bitmap w konsoli to nieporozumienie. Jeśli zaś chodzi o DOS, z tego co pamiętam aplikacja mogła przełączać tryb pracy karty graficznej, dzięki któremu można było mieć dostęp do bufora ekranu, gdzie składało się grafikę. Oczywiście żadnych funkcji rysujących nie było, te trzeba było sobie samemu napisać. Takie były szalone czasy ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez nvdante » niedziela, 21 grudnia 2014, 21:44

Ok, rozumiem. Dzięki w takim razie za wyjaśnienie :)

Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez Cyfrowy Baron » niedziela, 21 grudnia 2014, 22:35

Mi konsola zawsze kojarzy się z MS DOS.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez Mironas » poniedziałek, 22 grudnia 2014, 12:13

Jeśli koniecznie musisz robić program graficzny na konsolę to stary dobry konsolowy Borland Turbo C/C++ zawierał obsługę trybu graficznego (po dołączeniu graphics.h).

Funkcje odpowiedzialne za rysowanie linii w tym środowisku to:
line(...) - rysuje linię od punktu do punktu
lintrel(...) - rysuje linię od aktualnego wskaźnika graficznego do punktu oddalonego o podany wektor
lineto(...) - rysuje linię od aktualnego wskaźnika do podanego punktu

Inne przydatne funkcje:
moveto(...) - ustawia wskaźnik na podany punkt
moverel(...) - przesunięcie wskaźnika oo podany wektor
getx() - zwraca aktualną pozycję X wskaźnika
gety() - wiadomo ;)

Funkcje do obsługi trybu graficznego:
intgraph(...) - inicjalizacja trybu graficznego
closegraph() - wiadomo
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Kod kreskowy

Nowy postprzez polymorphism » poniedziałek, 22 grudnia 2014, 13:45

Jeśli koniecznie musisz robić program graficzny na konsolę to stary dobry konsolowy Borland Turbo C/C++

Chyba nie proponujesz mu, żeby w XXI wieku pisał program pod DOS-a? :lol:
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod kreskowy

Nowy postprzez nvdante » poniedziałek, 22 grudnia 2014, 13:53

Faktycznie poczytałem troszkę po necie i widzę, że tą bibliotekę można podłączyć także pod inne kompilatory typu DEV C++ i tam również to zadziała, aczkolwiek ludzie piszą, że już sam kompilator jest raczej lipny :/
Udało mi się natomiast w BCB 6 napisać pierwszy kod kreskowy, który jest prawidłowo odczytywany przez czytnik, więc jest progres ;)
Dzięki za info Panowie!
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows VistaFirefox

Re: Kod kreskowy

Nowy postprzez Mironas » poniedziałek, 22 grudnia 2014, 13:57

polymorphism napisał(a):Chyba nie proponujesz mu, żeby w XXI wieku pisał program pod DOS-a? :lol:


Tak właśnie proponuję, biorąc pod uwagę jego wymagania - program na konsolę i jednocześnie praca w trybie graficznym.
To że nie rozumiem tych wymagań (konsola) to już inna sprawa.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Kod kreskowy

Nowy postprzez nvdante » poniedziałek, 22 grudnia 2014, 14:07

Sprawa dość prosta, DEV C++ jest darmowy także komercyjnie, więc chciałem zrobić co się da, żeby go wykorzystać, ale chyba nie tędy droga ;)
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows VistaFirefox

Re: Kod kreskowy

Nowy postprzez polymorphism » poniedziałek, 22 grudnia 2014, 14:29

(...) i widzę, że tą bibliotekę można podłączyć także pod inne kompilatory typu DEV C++ i tam również to zadziała, aczkolwiek ludzie piszą, że już sam kompilator jest raczej lipny :/

To, co można podłączyć pod DevC, to port BGI pod windowsa, czyli WinBGI. Tylko po co się z tym pieprzyć, jeśli masz GDI. Z tym DevC++ to prawda, gdy mowa o starych wersjach. Ponoć ktoś przywrócił do życia projekt tego środowiska, więc może już nie jest tak źle. Z drugiej strony jest całkiem niezły Code::Blocks, który korzysta z tego samego kompilatora co Dev. Więc jak już musisz, to próbuj z Code::Blocks.

Tak właśnie proponuję, biorąc pod uwagę jego wymagania

Trochę siedzisz na forum i powinieneś wiedzieć, że ludzie mają dziwne pomysły i wymagania. Rolą nieco bardziej doświadczonych użytkowników jest uświadamiać ludzi, że pewne ich pomysły są po prostu bez sensu.

Sprawa dość prosta, DEV C++ jest darmowy także komercyjnie, więc chciałem zrobić co się da, żeby go wykorzystać

Wspomniany Code::Blocks jest darmowy. No i Almighty Visual C++ w wersji Express.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Następna strona

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 44 gości

cron