Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-04-2008, 14:18   #1
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
[VC++] Come iniziare una console application nella mia situazione

Salve ragazzi,

vi chiedo aiuto!

Devo creare lavorare in ambiente Visual Studio C++ vers. 6!
linguaggio: C++!

Devo fare un lavoro che consiste nel creare un programma ke legga e scriva su tag rfid ( tecnologia che usa le onde radio e permette l'identificazione di oggetti salvando le loro informazioni su, appunto, dei tag). Questi tag sono letti da un lettore (il reader) e quindi io dovrei richiamarmi anche delle funzioni interne a delle DLL. Ma non è questo il mio problema.

Il fatto è che in un SDK ho un exe chiamato SampleHostDlg.exe, che non è altro che una finestra tramite cui posso leggere e scrivere su questi tag RFId, inoltre nell'SDK ho anche i sorgenti (file .h e .cpp) che servono per creare l'exe! Ma anzichè fare tutto ciò con le finestre, io vorrei farlo semplicemente con la schermata Dos, così da togliere tanto codice che a me non serve.

Si può fare partendo dai file che già ho nell'sdk? e se sì, in che modo?

Grazie.
Spero di avervi dato tutte le info necessarie per aiutarmi, sennò fatemelo sapere che ve le do tranquillamente!


Ragazzi scusate io ho fatto così:

Nuovo progetto-> win32 console application -> An empty project.

poi ho caricato due header file che ci sono nell'sdk. ho compilato...nessun errore!ovviamente.
a questo punto ho creato un file .cpp scegliendo Nuovo dal menu File e poi scegliendo C++ source file.
Ho compilato così com'è...vuoto..e mi esce quest'errore:
--------------------Configuration: RFID_NEW - Win32 Debug--------------------
Compiling...
main.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/RFID_NEW.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

RFID_NEW.exe - 2 error(s), 0 warning(s)

Mi sapete dire perchè?
Grazie.

Ultima modifica di register : 01-04-2008 alle 14:30.
register è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 14:23   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
Salve ragazzi,

vi chiedo aiuto!

Devo creare lavorare in ambiente Visual Studio C++ vers. 6!
linguaggio: C++!
Ma non puoi usare un IDE/compilatore più recente?
Visual Studio Express 2005 o 2008 dovrebbero andarti più che bene.

Quote:
Devo fare un lavoro che consiste nel creare un programma ke legga e scriva su tag rfid ( tecnologia che usa le onde radio e permette l'identificazione di oggetti salvando le loro informazioni su, appunto, dei tag). Questi tag sono letti da un lettore (il reader) e quindi io dovrei richiamarmi anche delle funzioni interne a delle DLL. Ma non è questo il mio problema.

Il fatto è che in un SDK ho un exe chiamato SampleHostDlg.exe, che non è altro che una finestra tramite cui posso leggere e scrivere su questi tag RFId, inoltre nell'SDK ho anche i sorgenti (file .h e .cpp) che servono per creare l'exe! Ma anzichè fare tutto ciò con le finestre, io vorrei farlo semplicemente con la schermata Dos, così da togliere tanto codice che a me non serve.

Si può fare partendo dai file che già ho nell'sdk? e se sì, in che modo?

Grazie.
Spero di avervi dato tutte le info necessarie per aiutarmi, sennò fatemelo sapere che ve le do tranquillamente!
Se hai un software da interfaccia grafica assai probabilmente sarà realizzato con le MFC per cui è praticamente impossibile portarlo a riga di comando, conviene riscriverlo da 0

Generalmente i lettori RFID sono connessi al computer tramite seriale, ma hai letto almeno la documentazione su come funziona l'hardware e i comandi da inviare?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 14:51   #3
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
sì l'ho letta.
anche se non tutta perchè è molto dipersiva.

Non posso usarne uno più recente.
E per il fatto che da errore di link anche solo con un .cpp vuoto che mi dici?
register è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 15:06   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
sì l'ho letta.
anche se non tutta perchè è molto dipersiva.
Usa la seriale per comunicare?
Che comandi utilizza?
Usa il CRC alla fine del comando?

Quote:
Non posso usarne uno più recente.
E per il fatto che da errore di link anche solo con un .cpp vuoto che mi dici?
Che errore ti dà? Sei troppo sul vago.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 15:29   #5
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
sì, per comunicare usa la seriale.

in che senso che comandi utilizza?
se intendi quelli per leggere e scrivere, dato che quello che sto cercando di fare ora è la lettura, allora il primo comando è la rilevazione del tag nel campo dell'antenna e il prototipo è:

int FEISC_0xB0_ISOCmd( int iReaderHnd, UCHAR cBusAdr, UCHAR* cReqData, int iReqLen, UCHAR* cRspData, int* iRspLen, int iDataType );

L'errore di link l'ho riportato come modifica in un secondo momento nel mio primo messaggio, solo che la mia modifica ho visto ke è successiva alla tua risposta, però quando io l'ho fatta ancora non si visualizzava la tua risposta.

cmq grazie
register è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 15:54   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
sì, per comunicare usa la seriale.

in che senso che comandi utilizza?
Nel senso dei comandi RFID, i pricipali comandi sono definiti in standard ISO.

Quote:
se intendi quelli per leggere e scrivere, dato che quello che sto cercando di fare ora è la lettura, allora il primo comando è la rilevazione del tag nel campo dell'antenna e il prototipo è:

int FEISC_0xB0_ISOCmd( int iReaderHnd, UCHAR cBusAdr, UCHAR* cReqData, int iReqLen, UCHAR* cRspData, int* iRspLen, int iDataType );
Questo è un metodo, suppongo dell'SDK, per comandi io intendevo proprio i dati da inviare via seriale.
Comunque visto che hai questo prototipo puoi usarlo per inviare e ricevere dati senza preoccuparti della comunicazione via seriale.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 10:10   #7
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
I comandi che si possono dare al reader per agire sull'rfid (in particolare quelli che mi interessano) sono:

- inventory, per rilevare la sua presenza nel campo dell'antenna.
- lettura (del suo identificativo e dei dati scritti su di esso).
- scrittura.

spero che sia questo che mi chiedevi.
grazie
register è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 10:45   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
I comandi che si possono dare al reader per agire sull'rfid (in particolare quelli che mi interessano) sono:

- inventory, per rilevare la sua presenza nel campo dell'antenna.
- lettura (del suo identificativo e dei dati scritti su di esso).
- scrittura.

spero che sia questo che mi chiedevi.
grazie
In realtà devi sapere i codici binari corrispondenti a questi comandi.

I campi iReaderHnd, cBusAdr, iDataType li dovresti trovare da qualche parte sulla documentazione.
cReqData non so se rappresenta l'intera stringa binaria da inviare o solo i dati del comando, dovrebbe essere specificato nella documentazione.
Gli altri 2 parametri contengono la risposta, che dovrebbe essere comando, numero tag, sequenza di tagid da 64 bit, crc, salvo diverse specifiche nella documentazione del tuo SDK.

Quando ho lavorato con gli RFID mandavo direttamente i comandi via seriale, il mio "SDK" era l'elenco dei comandi supportati dal dispositivo.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 11:15   #9
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Ah, ho capito.
a dire il vero ci sono i codici in esadecimale:
- 0xB0 per l'isocmd;
- 0x01 per l'inventory;
- 0x23 per la lettura;
- 0x24 per la scrittura.

Quello che c'è scritto nel manuale riguardo alla funzione te lo riporto sotto, ovviamente non ti chiedo di leggerlo per me, ma giusto per avere altre info che forse ti permetteranno di aiutarmi.
Ti posso chiedere tu come hai fatto a fare il tuo lavoro?
Io mi son creato un progetto Win32 Console Application;
ho messo la fecom.dll in c\windows (come dice nel manuale);
poi ho aggiunto il file fecom.h al progetto (l'ho messo anche nella directory proprio del progetto) e ho creato un main in cui c'è:

#include "fecom.h"


void main () {

char* cPortNr = "1";

int handle = FECOM_OpenPort( cPortNr);

}

Questo l'ho fatto per creare ed aprire l'oggetto porta.
Però mi da questo tipo di errore:

--------------------Configuration: RFID - Win32 Debug--------------------
Compiling...
main.cpp
Linking...
main.obj : error LNK2001: unresolved external symbol __imp__FECOM_OpenPort@4
Debug/RFID.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

RFID.exe - 2 error(s), 0 warning(s)


Mi potresti aiutare? Io ci sto sbattendo la testa e mi sto deprimendo perkè non so come proseguire.

Grazie.


Descrizione della funzione FEISC_0xB0_ISOCmd sul manuale:

"The function initiates a data transfer for multiple ISO15693 or ISO14443 transponders located in the active zone of the ISC Reader.

The data necessary for the data transfer are to be stored in cReqData.
The number of characters contained in cReqData must be indicated in iReqLen.

The data read from the ISO15693 oder ISO14443 transponder are contained in
cRspData.

iRspLen indicates the number of characters in cRspData.
The parameter iDataType specifies whether cReqData and cRspData are to be
interpreted as a hex array or as a string.

Note the following: The buffer for the receive data cRspData must be dimensioned such that all the receive data can be stored.
This means in the case of iDataType=1 that the size of the buffer cRspData is twice as large as in the case of iDataType=0.
The length of the send data (number of characters in cReqData) must be indicated in iReqLen.
If iDataType=1, then iReqLen is twice as large as in the case of iDataType=0. The length indication for the receive buffer (cRspData) is to be handled analogously.
iReaderHnd is the handle for the Reader object.
cBusAdr is the bus address set in the Reader."
register è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 11:31   #10
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
wow...grande...è andato ora...non mi da errori.

Grazie =")

ora proseguo, a piccoli passi, ma spero di raggiungere presto la meta.

Ma sapete come si definisce un a variabile di tipo puntatore a UCHAR?

cioè, la variabile: UCHAR* cReqData, come va inizializzata?

Comunque grazie ancora.

Un'altra cosa, io sul main riportato su ho fatto poi un if sulla "handle",
in particolare:
if ( handle < 0 ) {.. vorrei qui visualizzare a video un errore ..};

per fare la visualizzazione dell'errore, mi sono comportato come se stessi lavorando col dev c++, e cioè:
ho incluso iostream.h e ho fatto nell'if **cout<< "Errore!";
solo che mi da errore sia sul cout che su << dicendomi che è un comando illegale.

Come potrei fare?
grazie

Ultima modifica di register : 02-04-2008 alle 12:19.
register è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 13:36   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
per fare la visualizzazione dell'errore, mi sono comportato come se stessi lavorando col dev c++, e cioè:
ho incluso iostream.h e ho fatto nell'if **cout<< "Errore!";
solo che mi da errore sia sul cout che su << dicendomi che è un comando illegale.

Come potrei fare?
grazie
intanto devi includere <iostream> senza .h poi hai usato il namespace std?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2008, 14:13   #12
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
nel senso il valore in che modo glielo devo passare.

UCHAR è un tipo predefinito che sta per Unsigned Char;
cioè dovrei quindi definire un'altra variabile ( es. uchar temp = "Ciao") e poi fare

cReqData = &temp; ?

ma una variabile uchar si inizializza proprio come una char o in qualche altro modo?


Per tommino,
no non ho usato "namespace std" anche perchè non so in quali occasione dovrei utilizzarlo.

Grazie
register è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 09:04   #13
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da register Guarda i messaggi
nel senso il valore in che modo glielo devo passare.

UCHAR è un tipo predefinito che sta per Unsigned Char;
cioè dovrei quindi definire un'altra variabile ( es. uchar temp = "Ciao") e poi fare

cReqData = &temp; ?

ma una variabile uchar si inizializza proprio come una char o in qualche altro modo?
UCHAR di per sè è un carattere senza segno (equivalente ad un BYTE) ovvero un numero tra 0 e 255, non è una stringa.
UCHAR* è usato per array di dati binari, esattamente quello che serve a te per comunicare con il lettore di tag.

Quote:
Per tommino,
no non ho usato "namespace std" anche perchè non so in quali occasione dovrei utilizzarlo.

Grazie
Difficile programmare in C++ senza nemmeno sapere cos'è il namespace standard.
Tutta la libreria standard del C++ è racchiusa nel namespace std, senza specificare
Codice:
using namespace std;
all'inizio dei file cpp (o nell header, ma è una cosa da non fare), opppure davanti ad ogni classe o funzione in esso contenuta (esmpio std::cout), il compilatore dovrebbe segnalarti errori come il tuo.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 12:43   #14
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Ciao tommino,

io ho ripreso in mano il c++ dopo 7 anni, perciò molte cose non me le ricordo.

Aggiungi poi che non è che impazzisco proprio per la programmazione...

Comunque grazie.

ora lo utilizzo.


ti volevo chiedere però un'altra cosa:

per quanto riguarda la lunghezza del buffer di ricezione ( int* iRspLen ) come devo inizializzarla?
nel senso, io a priori non posso sapere quanta informazione andrà ad essere immagazzinata nel buffer, quindi come inizializzo questa variabile?

Ti ringrazio tantissimo.

Ultima modifica di register : 03-04-2008 alle 17:36.
register è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 10:26   #15
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Ragazzi scusate,
ho un altro problema.

quando vado ad includere degli header file (nel caso particolare FEDM.h) nel mio main, all'atto della compilazione ho il seguente errore:

c:\programmi\microsoft visual studio\vc98\include\windef.h(47) : error C2632: 'char' followed by 'char' is illegal
c:\programmi\microsoft visual studio\vc98\include\windef.h(47) : warning C4091: 'typedef ' : ignored on left of 'unsigned char' when no variable is declared

dove l'errore C2632 si riferisce a questa istruzione:

typedef unsigned char UCHAR

è possibile che capiti questo errore? perchè un progetto win32console application dà questo errore mentre il progetto dell'SDK (a cui appartengono tutti gli header file che sto utilizzando) non dà problemi? Il progetto dell'SDK però non è sicuramente win32console application perchè il risultate del Build è una finestra visuale.

Grazie,
attendo vostre risposte.
register è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 11:07   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Secondo me o fai doppie inclusioni o ti manca un punto e virgola da qualche parte.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 12:52   #17
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Ciai cionci,
grazie per aver risposto.

Alla fine ho risolto così, mettendo quest'istruzione prima dell'using namespace std:

#ifndef WIN32
typedef unsigned char UCHAR ;
#endif

ed ora non dà più problemi.

Invece vorrei sapere una cosa, in un progetto win32console application non è possibile dichiarare variabili CString?
te lo chiedo perchè quando ne dichiaro una ottengo :
error C2065: 'CString' : undeclared identifier

nonostante abbia fatto:
#include <string>
#include <cstring>

Se non fosse possibile utilizzare cstring, in quale altro modo potrei dichiarare la variabile? forse char*?

grazie.
register è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 12:56   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
CString è una classe delle MFC. A quale scopo ti servirebbe ? Non ti bastano le string del C++ ?
Inoltre l'include <cstring> include la stirng.h di C
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2008, 13:05   #19
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Ciao cionci,

vorrei usare CString per il solo fatto che una delle funzioni dell'SDK che devo utilizzare ha tra i parametri di ingresso uno di tipo CString appunto.

Ma poi ho anche un altro problema (ancoooora!!! dirai tu! purtroppo sì)

Il problema è questo:
non ricordo se l'ho già detto, comunque di tutto questo progetto io finora ho creato solo il file main.cpp, il resto proviene dall'SDK. Ora ho questa situazione:

cerco di aggiungere al progetto anche i file .cpp dove sono implementate alcune classi che devo usare. L'aggiunta di per sè non mi dà problema. Ma se, mettiamo, io voglio utilizzare la funzione setdata membro della classe FEDM_ISCReader implementata in FEDM_ISCReader.cpp, quiando aggiungo il .cpp non ho problemi, se poi nel mio main vado a fare FEDM_ISCReader* m_reader = NULL; mi escono una sfilza di errori (anche 55).

Se vi state chiedendo perchè ho dichiarato un puntatore alla classe anzichè dichiarare proprio m_reader semplicemente come un oggetto, il motivo è che ottengo questi tre errori di link che ancora non sono riuscito a risolvere:

main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall FEDM_ISCReader::~FEDM_ISCReader(void)" (??1FEDM_ISCReader@@UAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall FEDM_ISCReader::FEDM_ISCReader(void)" (??0FEDM_ISCReader@@QAE@XZ)
Debug/RFID.exe : fatal error LNK1120: 2 unresolved externals


Questi 3 errori li ottengo però se non aggiuno i cpp al progetto, altrimenti avrei anche gli oltre 50 errori di prima.

Potete aiutarmi?
Grazie
register è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Wi-Fi 8 secondo Intel: la nuova era del ...
MediaWorld e il caso degli iPad Air vend...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v