|
|
#1
kehhu @ 19.03.10 22:16 |
[пожаловаться]
|
|
Кароче задали лабу нефига не объяснили...Тема лабы :получиь результат с помощью операций sizeof;+;результат о_О
Кто поможет: Тому Тёлки,Жига,Туборг,Семки, Раки.
ЗЫ. Не школяр
ЗЫЫ. полезняшки не ем
ЗЫЫЫ. Школяры спать пора
|
|
|
#2
kehhu @ 19.03.10 22:19 |
[пожаловаться]
|
|
#include
#include
#include
using namespace std;
int main(){
// Level 2.
setlocale(LC_ALL,"Russian");
|
|
|
#3
cool story 36484 @ 19.03.10 22:20 |
[пожаловаться]
|
|
#include
#include
#include
#include
#include
#include
void init_raw_tty( int fd ){
struct termios newtio;
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 10;
newtio.c_cc[VMIN] = 0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
}
FILE * powerants;
int powerants_int;
void printAnswer( void ){
int inCh;
do {
inCh = fgetc(powerants);
if( inCh > 0 ){
//printf("%c",inCh);
} else {
printf("x");
fputc(0x1B,powerants);
fflush(powerants);
tcdrain(powerants_int);
fprintf(powerants,"?%r");
fflush(powerants);
tcdrain(powerants_int);
};
} while( inCh != 0x0D );
}
int main( int ArgC, char * ArgV[] ){
powerants_int = open("/dev/ttyS1",O_RDWR | O_NOCTTY );
if(! powerants_int ){
fprintf( stderr, "ERROR: (open) %sn", strerror( errno ) );
return -1;
};
init_raw_tty( powerants_int );
powerants = fdopen( powerants_int, "w+b" );
fprintf(powerants,"%c",0x1B); // Прочистка буфера приема PowerAnt
fprintf(powerants,"??r");
printAnswer();
fprintf(powerants,"=ABCDEFGHr");
printf("=ABCDEFGHn");
printAnswer();
char ltr = 'A';
char ltr2 = 'a';
int x = 3600;
while( x-- ){
fprintf(powerants,"=%cr",ltr);
//printf("=%cn",ltr);
printAnswer();
//usleep( 1 );
fprintf(powerants,"=%cr",ltr2);
//printf("=%cn",ltr2);
printAnswer();
//usleep( 1 );
ltr++;
ltr2++;
if( ltr > 'H'){
ltr = 'A';
ltr2 = 'a';
};
};
return 0;
};
Мерцание всеми лампочками
Linux, gcc. PowerAnt типа SwSe, Огоньки индикации включения выключателей ABCDEFGH по одному гаснут и зажигаются.
#include
#include
#include
#include
#include
#include
void init_raw_tty( int fd ){
struct termios newtio;
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 10;
newtio.c_cc[VMIN] = 0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
}
FILE * powerants;
int powerants_int;
void printAnswer( void ){
int inCh;
do {
inCh = fgetc(powerants);
if( inCh > 0 ){
printf("%c",inCh);
} else {
printf("x");
};
} while( inCh != 0x0D );
}
int main( int ArgC, char * ArgV[] ){
powerants_int = open("/dev/ttyS1",O_RDWR | O_NOCTTY );
if(! powerants_int ){
fprintf( stderr, "ERROR: (open) %sn", strerror( errno ) );
return -1;
};
init_raw_tty( powerants_int );
powerants = fdopen( powerants_int, "w+b" );
fprintf(powerants,"%c",0x1B); // Прочистка буфера приема PowerAnt
int x = 3600;
while( x-- ){
fprintf(powerants,"=AbCdEfGhr");
printAnswer();
fprintf(powerants,"=aBcDeFgHr");
printAnswer();
};
return 0;
};
Программа управления одним PowerAnt типа SwSw (MS Windows)
Windows, Borland C++ v6. PowerAnt типа SwSw, При помощи окошка с CheckBox и кнопок можно полностью управлять одним устройством.
#include
#pragma hdrstop
#include "Begin.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
#include
#include
DCB pwrAntDCB;
HANDLE pwrAntHANDLE;
COMMTIMEOUTS pwrAntCommTimeouts;
void ShowError( const char * whereError ){
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Display the string.
MessageBox( NULL, (const char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}
BOOL openPwrAntPort( const char * comName ){
pwrAntHANDLE = CreateFile(
comName
,GENERIC_READ | GENERIC_WRITE // Read-Write access
,0 // Cannot be shared
,NULL // Security Attributes
,OPEN_EXISTING // Open existing file
,FILE_ATTRIBUTE_NORMAL || FILE_FLAG_WRITE_THROUGH // | FILE_FLAG_NO_BUFFERING // Auto flush
,NULL // Template File
);
if( ! pwrAntHANDLE ){
ShowError("CreateFile");
return FALSE;
};
if( ! GetCommState( pwrAntHANDLE, &pwrAntDCB )){
ShowError("GetCommState");
return FALSE;
};
if( ! BuildCommDCB( "baud=9600 parity=N data=8 stop=1", &pwrAntDCB ) ){
ShowError("BuildCommDCB");
return FALSE;
};
if( ! SetCommState( pwrAntHANDLE, &pwrAntDCB )){
ShowError("SetCommState");
return FALSE;
};
if( ! GetCommTimeouts( pwrAntHANDLE, &pwrAntCommTimeouts ) ){
ShowError("GetCommTimeouts");
return FALSE;
};
pwrAntCommTimeouts.ReadIntervalTimeout = 10; // milliseconds
pwrAntCommTimeouts.ReadTotalTimeoutMultiplier = 0; //
pwrAntCommTimeouts.ReadTotalTimeoutConstant = 0; //
pwrAntCommTimeouts.WriteTotalTimeoutMultiplier = 0; //
pwrAntCommTimeouts.WriteTotalTimeoutConstant = 0; //
if( ! SetCommTimeouts( pwrAntHANDLE, &pwrAntCommTimeouts ) ){
ShowError("SetCommTimeouts");
return FALSE;
};
return TRUE;
}
BOOL pwrAntCMD( const char * cmd ){
unsigned char buff[70];
unsigned long i;
unsigned long io_i;
for( i = 0 ; cmd[i] ; i++ ){
buff[i] = cmd[i];
};
buff[i++] = 0x0D;
buff[i++] = 0x00; //
/* {
unsigned char buff2[100];
unsigned char * buffptr = buff2;
MessageBox( NULL, buff , "Send Command", MB_OK|MB_ICONINFORMATION );
for( unsigned int x = 0 ; x < i ; x++ ){
buffptr += sprintf( buffptr, "%02x ", buff[x] );
};
MessageBox( NULL, buff2 , "Answer by Bytes", MB_OK|MB_ICONINFORMATION );
}
*/ if( ! WriteFile(
pwrAntHANDLE
,buff
, i-1 // Do not send Zero at end of command
, &io_i
, NULL
)){
ShowError("WriteFile");
return FALSE;
};
if( ! FlushFileBuffers( pwrAntHANDLE )){
ShowError("FlushFileBuffers");
return FALSE;
};
// Read the answer from PowerAnt
if( ! ReadFile(
pwrAntHANDLE
,buff
, 50 // Full PowerAnt Buffer Length
, &io_i
, NULL
)){
ShowError("ReadFile");
return FALSE;
};
buff[io_i] = 0; // Null Termination
if( io_i > 3 || (buff[0] != '+') ){
MessageBox( NULL, buff , "Command execution result", MB_OK|MB_ICONINFORMATION );
/*
unsigned char buff2[100];
unsigned char * buffptr = buff2;
for( unsigned int x = 0 ; x < io_i ; x++ ){
buffptr += sprintf( buffptr, "%02x ", buff[x] );
};
MessageBox( NULL, buff2 , "Answer by Bytes", MB_OK|MB_ICONINFORMATION );
*/
};
return TRUE;
}
void closePwrAntPort( void ){
if( ! CloseHandle( pwrAntHANDLE )){
ShowError("CloseFile");
return;
};
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
openPwrAntPort( "COM2" );
}
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
closePwrAntPort();
}
void __fastcall TForm1::Button1Click(TObject *Sender){
// In Edit1 properties field OEMConvert MUST BE TRUE!
pwrAntCMD( Edit1->Text.c_str() );
}
void __fastcall TForm1::CheckBox12Click(TObject *Sender)
{
if( CheckBox12->Checked ){
pwrAntCMD("=E");
} else {
pwrAntCMD("=e");
};
}
void __fastcall TForm1::CheckBox11Click(TObject *Sender)
{
if( CheckBox11->Checked ){
pwrAntCMD("=F");
} else {
pwrAntCMD("=f");
};
}
void __fastcall TForm1::CheckBox10Click(TObject *Sender)
{
if( CheckBox10->Checked ){
pwrAntCMD("=G");
} else {
pwrAntCMD("=g");
};
}
void __fastcall TForm1::CheckBox9Click(TObject *Sender)
{
if( CheckBox9->Checked ){
pwrAntCMD("=H");
} else {
pwrAntCMD("=h");
};
}
void __fastcall TForm1::CheckBox16Click(TObject *Sender)
{
if( CheckBox16->Checked ){
pwrAntCMD("=N");
} else {
pwrAntCMD("=n");
};
}
void __fastcall TForm1::CheckBox15Click(TObject *Sender)
{
if( CheckBox15->Checked ){
pwrAntCMD("=M");
} else {
pwrAntCMD("=m");
};
}
void __fastcall TForm1::CheckBox14Click(TObject *Sender)
{
if( CheckBox14->Checked ){
pwrAntCMD("=L");
} else {
pwrAntCMD("=l");
};
}
void __fastcall TForm1::CheckBox4Click(TObject *Sender)
{
if( CheckBox4->Checked ){
pwrAntCMD("=D");
} else {
pwrAntCMD("=d");
};
}
void __fastcall TForm1::CheckBox3Click(TObject *Sender)
{
if( CheckBox3->Checked ){
pwrAntCMD("=C");
} else {
pwrAntCMD("=c");
};
}
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{
if( CheckBox2->Checked ){
pwrAntCMD("=B");
} else {
pwrAntCMD("=b");
};
}
void __fastcall TForm1::CheckBox5Click(TObject *Sender)
{
if( CheckBox5->Checked ){
pwrAntCMD("=A");
} else {
pwrAntCMD("=a");
};
}
void __fastcall TForm1::CheckBox8Click(TObject *Sender)
{
if( CheckBox8->Checked ){
pwrAntCMD("=I");
} else {
pwrAntCMD("=i");
};
}
void __fastcall TForm1::CheckBox7Click(TObject *Sender)
{
if( CheckBox7->Checked ){
pwrAntCMD("=J");
} else {
pwrAntCMD("=j");
};
}
void __fastcall TForm1::CheckBox6Click(TObject *Sender)
{
if( CheckBox6->Checked ){
pwrAntCMD("=K");
} else {
pwrAntCMD("=k");
};
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
pwrAntCMD("??");
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
pwrAntCMD("?=");
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
pwrAntCMD("?%");
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
pwrAntCMD("?#");
}
|
|
|
Reply | | | |
|
|
|