Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-10-2007, 22:11   #1
lukayak
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 1
RS232 lettura con C++

Ciao a tutti, ho un problema
ho un problema con un programma scritto in C++. il progetto che ho preso dalla rete(con consenso dell'autore) aveva un ingresso da porta parallela.
Vorrei tramutarla in in gresso RS232 dalla COM1. Ho modificato cosi il codice in modo che il dato che veniva preso dalla parallela ora viene preso dalla com1, peccato che devo aver sbagliato qualcosa, perchè non funziona.

Ecco il codice di uno dei file del progetto, quello nel quale ho cambiato le varie cose.

// MCP3002.cpp: implementation of the MCP3002 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MCP3002.h"
#include "MultimediaTimer.h"
#include "ADC3002.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//_________________________________________

//Delcare out timer function
//Function must be static
static void TimerFunction(void* obj,UINT idEvent);

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MCP3002::MCP3002()
{ //inizializzazione membro privato.
hComm = CreateFile("COM1", //porta sorgente dati
GENERIC_READ,//solo in lettura
0,//handle non condiviso
0, //
OPEN_EXISTING,//
FILE_FLAG_OVERLAPPED,//
0);
if (hComm == INVALID_HANDLE_VALUE)exit(1);
// error opening port; abort
DCB dcb;
BOOL res;

dcb.ByteSize = 8;
dcb.StopBits =ONESTOPBIT;
dcb.BaudRate = CBR_9600;
dcb.Parity = NOPARITY;
dcb.fAbortOnError = 0;
//Set new state
res = SetCommState(hComm,&dcb);
}

MCP3002::~MCP3002()
{
if (hComm != INVALID_HANDLE_VALUE)CloseHandle(hComm);//chiude se gia inizializato prima
}


void TimerFunction(void* obj,UINT idEvent)
{
//This is our timer actevated function
//First get a pointer to class functions
MCP3002* mcp = (MCP3002*) obj;
//Activate class functions
mcp->HandleTimer(idEvent);

}

void MCP3002::HandleTimer(UINT nIDEvant)
{
//This function is activated from MM timer events
//Because we need to make 5000 samples do them
if(i_mmcount<=5000)
{
//GetADC Samples
Channel_0[i_mmcount] = ADC_Ch_0();
Channel_1[i_mmcount] = ADC_Ch_1();
//update counter
i_mmcount++;
}

//After we have done all samples stop sampling and MM timer
if(i_mmcount>5000)
{
MMT_Stop();//Stop MMTimer
DoEndNotification();//Make a notification to the program
}

}
void MCP3002::MMT_Stop()
{
//This function stops the MM timer
Sleep(10);
TEnd = CTime::GetCurrentTime();
//Stop timer
MMTimer.StopTimer();
Sleep(10);
}




void MCP3002::MMT_Start(unsigned short LPT)
{
//This function sets the LPT type
//Zero the counter and after this stop the timer
//Now it can be restarted and do samples
i_mmcount = 0;
LPT_PORT = LPT;
//If MMTimer alredy runs stop it now!
MMT_Stop();
//Before start timer get the time moment
TStart = CTime::GetCurrentTime();
//Do timer event any 2 msec = 500Hz +- 2Hz
MMTimer.StartTimer(this,2,10,TimerFunction);

}

unsigned short MCP3002::ADC_Ch_0()
{
//adc3002.GetChanne_0(LPT_PORT,10);
return (unsigned short)GetByteOnSerial();

}


unsigned short MCP3002::GetByteOnSerial()
{

unsigned short c;
DWORD NumberOfBytesRead;
DWORD nNumberOfBytesToRead = 1;
BOOL bResult;

nNumberOfBytesToRead=1;
DWORD nNumberOfBytesRead=0;

bResult = ReadFile(
hComm,
&c,
nNumberOfBytesToRead,
&NumberOfBytesRead,
NULL
);
FILE *pFile; //ho provato a stampare su un file i dati per vedere cosa
pFile=fopen("myfile.txt","w+"); //veniva fuori. scrive solo 6 lettere.
if(pFile!=NULL){
fprintf (pFile, "%x\n",&c);
fclose (pFile);
}
if(NumberOfBytesRead>0)
return (unsigned short)c;

return 0;
}


unsigned short MCP3002::ADC_Ch_1()
{
return (unsigned short)GetByteOnSerial();

}

void MCP3002::SetEndSampleNotification(void *obj, EndSampleNotification endnotification)
{
//Sets the end sample notification event
//so it will be activated after sampling period
object = obj;
//See declaration of EndSampleNotification
EndNotification = endnotification;

}

void MCP3002:oEndNotification()
{
//This function activates a function and pass a parameters
//to in our class
int len;
len = 5000;
//activates a function EndNotification see declaretion
EndNotification(object,&Channel_0[0],&Channel_1[0],len,TStart,TEnd);

}


Questo è un file che fa parte di un progetto che potrete trovare per intero a http://www.codeproject.com/tools/ecg_dsp.asp

Se vi viene in mente qualcosa ditemi.

Grazie mille!!!
lukayak è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Lo compri una volta, lo giochi dove vuoi...
Qiantinuum annuncia Helios, "il com...
Samsung Galaxy S26 Ultra: una sola novit...
Google prepara Gemini 3 Pro e Nano Banan...
TVS non è solo moto e scooter: ec...
Alexa+ arriva su BMW: gli automobilisti ...
Gemini Deep Research arriva su Google Fi...
Rinvii a catena, Marvel 1943: Rise of Hy...
Xiaomi inaugura uno spazio dedicato ai f...
Rilasciate le specifiche di Bluetooth 6....
L'obiettivo che mette tutto a fuoco: la ...
Meta avrebbe raccolto fino al 10% dei ri...
NVIDIA DGX Spark e videogiochi? Una pess...
Serie Oppo Reno15 confermata: arriva il ...
UPDF 2025: l'editor PDF che fa (quasi) t...
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: 00:23.


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