ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
258163
Т.Достоевский (12.06.2011 02:21 - 03:56, просмотров: 1173)
Камрады, а не у кого не завалялось visual studio с 2003? А то чтото проект из 2003 в 2005 не компиляется. И вообще фигня какая то MessageBox(NULL, "Текст", "Заголовок", 4 | 10); пишет
error C3861: 'MessageBox': identifier not found
И HANDLE не понимает и DWORD не понимает. Может из за того что версия экспрес, или в хидерах что то забыл? Вот то что компилялось в 2003(ну потерял Я её) #include "stdafx.h" #include <windows.h> #define quantity_bulbs 30 #define colors 3 #define table_volumes_lage (quantity_bulbs * colors) #define bit_1 0xE0 #define bit_0 0xFC #define sinxrodata 0xFF #define sinxroframes 1 #define large_comand_message ( quantity_bulbs * colors * 8 + sinxroframes ) #define end_large_comand_message (large_comand_message-1) #define RED_color 2 #define GREEN_color 1 #define BLUE_color 0 typedef struct _OVERLAP { ULONG_PTR volumes_Internal; ULONG_PTR volumes_InternalHigh; DWORD volumes_Offset; DWORD volumes_OffsetHigh; HANDLE volumes_hEvent; } volumes_OVERLAP; DWORD WINAPI vrite_port(PVOID ); DWORD WINAPI effects(PVOID ); unsigned char gloobaal = 0; //длинна отладки unsigned char comand_message[ large_comand_message ]; //посылка в порт unsigned char table_volumes[ table_volumes_lage ]; HANDLE Eventes; HANDLE Thread_PORTS_is_started; HANDLE Thread_effects_is_started; //---------------- Головной поток ---------------- int _tmain(int argc, _TCHAR* argv[]){ DWORD wsize; DWORD tsteventes; int x = 0; printf("_tmain are started with a priority %d\n\r", GetPriorityClass( GetCurrentProcess() ) ); //семафоры событий Eventes = CreateEvent(NULL, FALSE, FALSE, NULL); Thread_PORTS_is_started = CreateEvent(NULL, TRUE, FALSE, NULL); Thread_effects_is_started = CreateEvent(NULL, TRUE, FALSE, NULL); //***** создать первый поток ***** HANDLE EFFECTS = CreateThread( NULL, 0, effects, (PVOID) &x, 0, &tsteventes); //работайем tsteventes = WaitForSingleObject( Eventes, 5000 ); if ( 0 != tsteventes ){ // TerminateThread (PORTS,tsteventes); TerminateThread (EFFECTS,tsteventes); // CloseHandle( PORTS ); CloseHandle( EFFECTS ); MessageBox( NULL, "Ошибка запуска потока"," EFFECTS Error", MB_OK ); ExitProcess(1); } //}else if ( WAIT_OBJECT_0 == tsteventes ){} //***** создать второй поток ***** //SetPriorityClass( GetCurrentProcess(), NORMAL_PRIORITY_CLASS ); //HANDLE PORTS = CreateThread( NULL, 0, vrite_port, (PVOID) &x, CREATE_SUSPENDED, &tsteventes); //сначала спящим //SetThreadPriority( PORTS, THREAD_PRIORITY_ABOVE_NORMAL ); //ResumeThread( PORTS ); //можэм нАчать! HANDLE PORTS = CreateThread( NULL, 0, vrite_port, (PVOID) &x, 0, &tsteventes); //работаем tsteventes = WaitForSingleObject( Eventes, 5000 ); if ( WAIT_OBJECT_0 != tsteventes ){ TerminateThread (PORTS,tsteventes); TerminateThread (EFFECTS,tsteventes); CloseHandle( PORTS ); CloseHandle( EFFECTS ); MessageBox(NULL, "Ошибка запуска потока"," PORTS Error", MB_OK); ExitProcess(1); } //запускаем патоки на выполнение SetThreadPriority( EFFECTS, THREAD_PRIORITY_ABOVE_NORMAL ); ResumeThread( EFFECTS ); //можэм нАчать! SetThreadPriority( PORTS, THREAD_PRIORITY_TIME_CRITICAL ); ResumeThread( PORTS ); //можэм нАчать! //***** главный цикл основного процесса ***** while(1){ //SetTimer() Sleep(100); MessageBox(NULL, "Надоело?","И чо?", MB_OK); CloseHandle( EFFECTS ); CloseHandle( PORTS ); ExitProcess(0); //SetFilePointer(volumes_bin, 0, 0, FILE_BEGIN); //WriteFile( volumes_bin, &comand_message, large_comand_message, &wsize, NULL ); //по задержке похоже работает//volumes[ j + i ] =0xE0; } CloseHandle( EFFECTS ); CloseHandle( PORTS ); return 0; } //---------------------------------------- первый поток ---------------------------------------- DWORD WINAPI effects(PVOID pvParam) { DWORD wsize; HANDLE volumes_bin; // printf("EFFECTS are started with a relative priority %d\n\r", GetPriorityClass( GetCurrentThread() ) ); //создать файл с данными передаваемыми в порт, для отладки. volumes_bin = CreateFile("volumes.bin", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL); if (volumes_bin == INVALID_HANDLE_VALUE){ printf( "Thread EFFECTS error, volumes.bin is NOT created\n\r"); SetEvent( Eventes ); ResetEvent( Thread_effects_is_started ); //MessageBox(NULL, "ниасилил создать файл","Error", MB_OK); ExitThread(1); } printf( "volumes.bin is created\n\r"); SetEvent( Eventes ); SetEvent( Thread_effects_is_started ); SuspendThread( GetCurrentThread() ); //SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_IDLE );//ждать запуска printf("Thread EFFECTS are restarted with a relative priority %d\n\r",GetThreadPriority( GetCurrentThread() )); while(1) { Sleep(50); table_volumes[RED_color]++; table_volumes[GREEN_color]--; table_volumes[BLUE_color] = table_volumes[GREEN_color]/2; gloobaal++; SetFilePointer(volumes_bin, 0, 0, FILE_BEGIN); WriteFile( volumes_bin, &table_volumes, table_volumes_lage, &wsize, NULL ); //по задержке похоже работайет//volumes[ j + i ] =0xE0; } } //---------------------------------------- второй поток ---------------------------------------- DWORD WINAPI vrite_port(PVOID pvParam) { HANDLE Port; DWORD wsize; printf("Thread PORTS_INI_SECTION are started with a relative priority %d\n\r",GetThreadPriority( GetCurrentThread() )); //открываим компорт Port = CreateFile("\\\\.\\COM6", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL); if (Port == INVALID_HANDLE_VALUE) { printf( "Thread PORTS, error open port\n\r" ); SetEvent( Eventes ); ExitThread(1); } //настраиваем компорт DCB ComDCM; memset(&ComDCM,0,sizeof(ComDCM)); ComDCM.DCBlength = sizeof(DCB); GetCommState(Port, &ComDCM); ComDCM.BaudRate = DWORD(57600); ComDCM.ByteSize = 8; ComDCM.Parity = NOPARITY; ComDCM.StopBits = ONESTOPBIT; ComDCM.fAbortOnError = TRUE; ComDCM.fDtrControl = DTR_CONTROL_DISABLE; ComDCM.fRtsControl = RTS_CONTROL_DISABLE; ComDCM.fBinary = TRUE; ComDCM.fParity = FALSE; ComDCM.fInX = ComDCM.fOutX = FALSE; ComDCM.XonChar = 0; //ComDCM.XoffChar = uint8_t(0xff); ComDCM.fErrorChar = FALSE; ComDCM.fNull = FALSE; ComDCM.fOutxCtsFlow = FALSE; ComDCM.fOutxDsrFlow = FALSE; ComDCM.XonLim = 128; ComDCM.XoffLim = 128; if( ! SetCommState( Port, &ComDCM ) ) { CloseHandle(Port); printf( "Thread PORTS, post_ini port error \n\r" ); SetEvent( Eventes ); ExitThread(1); } //надоже, получилось! printf("COMPort works on speed %d\n\r",ComDCM.BaudRate); SetEvent( Eventes ); SetEvent( Thread_PORTS_is_started ); SuspendThread( GetCurrentThread() ); //SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_IDLE );//ждать запуска printf("Thread PORTS are restarted with a relative priority %d\n\r",GetThreadPriority( GetCurrentThread() )); //--- передача соопстно --- while(1){ //перекодировать байты в код для гирлянды unsigned char datas; for(unsigned int j=0; j < quantity_bulbs * colors; j++ ) { datas = table_volumes[ j ]; for(unsigned char bitvise =0x80, unsigned int i=0; i<8 ;i++, bitvise = (bitvise >> 1) ){ if (datas & bitvise){ /*перекодировать биты в байты*/ comand_message[ i + j * 8 ] = bit_1; }else{ comand_message[ i + j * 8 ] = bit_0; } } } comand_message[ end_large_comand_message ] = sinxrodata; WriteFile( Port, &comand_message, ( large_comand_message ), &wsize, 0 ); //по задержке похоже работает printf( "%d \r",gloobaal); //отладка }return(0); }