int stop_opi_pollthread (void) { unsigned char buf[8] = {0x33,0x33,0x00,0x02,0x20,0x22,0x00,0x42}; // request stop module fOpiThreadDone=TRUE; Sleep(150); write_to_comport (buf,8); return(0); }
void COM_WRITEROBJ::work(void) { if ((TTY.COMDEV!=INVALID_HANDLE_VALUE) && (en_trigger) && (input!=INVALID_VALUE) && (trigger==INVALID_VALUE)) { write_to_comport (command ); write_to_comport (data1 ); write_to_comport (data2 ); cnt++; if (hDlg==ghWndToolbox) { char szdata[50]; sprintf(szdata,"%d frames written",cnt); SetDlgItemText(hDlg,IDC_STATUS,szdata); } } trigger=input; if ((TTY.COMDEV!=INVALID_HANDLE_VALUE) && (en_trigger) && (input2!=trigger2) && (input2!=INVALID_VALUE)) { write_to_comport (command ); write_to_comport (data1 ); write_to_comport ((unsigned char) input2); cnt++; if (hDlg==ghWndToolbox) { char szdata[50]; sprintf(szdata,"%d frames written",cnt); SetDlgItemText(hDlg,IDC_STATUS,szdata); } } trigger2=input2; }
int start_opi_pollthread (void) { DWORD dwOpiThreadStatId; unsigned char buf[8] = {0x33,0x33,0x00,0x02,0x20,0x23,0x00,0x43}; // request start module write_to_comport (buf,8); fOpiThreadDone=FALSE; TTY.OPITHREAD = CreateThread( NULL, 1000, (LPTHREAD_START_ROUTINE) OpiProc, 0, 0, &dwOpiThreadStatId); return(0); }
DWORD WINAPI OpiProc(LPVOID lpv) { DWORD dwWritten; unsigned char buf[8]; buf[0]=0x33; buf[1]=0x33; buf[2]=0x00; buf[3]=0x02; buf[4]=0x10; buf[5]=0x00; buf[6]=0x00; buf[7]=0x10; while (!fThreadDone) { if (TTY.CONNECTED) { write_to_comport (buf,8); Sleep (50); // send a request packet every 50 milliseconds } } return(0); }
void write_string_to_comport ( char * s) { for (unsigned int i=0; i< strlen(s); i++) write_to_comport(s[i]); }
LRESULT CALLBACK ComWriterDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char szdata[50]; COM_WRITEROBJ * st; st = (COM_WRITEROBJ *) actobject; if ((st==NULL)||(st->type!=OB_COM_WRITER)) return(FALSE); switch( message ) { case WM_INITDIALOG: CheckDlgButton(hDlg, IDC_TRIGGER, st->en_trigger); SetDlgItemInt(hDlg,IDC_COMMAND,st->command,0); SetDlgItemInt(hDlg,IDC_DATA1,st->data1,0); SetDlgItemInt(hDlg,IDC_DATA2,st->data2,0); if (TTY.COMDEV==INVALID_HANDLE_VALUE) SetDlgItemText(hDlg,IDC_STATUS,"COM-Port for EEG not available"); else if (st->cnt==0) SetDlgItemText(hDlg,IDC_STATUS,"ready to send"); else { sprintf(szdata,"%d frames written",st->cnt); SetDlgItemText(hDlg,IDC_STATUS,szdata); } break; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SENDCOMMAND: st->command=(unsigned char) GetDlgItemInt(hDlg,IDC_COMMAND,NULL,0); st->data1=(unsigned char) GetDlgItemInt(hDlg,IDC_DATA1,NULL,0); st->data2=(unsigned char) GetDlgItemInt(hDlg,IDC_DATA2,NULL,0); if (TTY.COMDEV!=INVALID_HANDLE_VALUE) { write_to_comport (st->command ); write_to_comport (st->data1 ); write_to_comport (st->data2 ); //if (!SetEvent(TTY.WriterEvent)) // if (WriterProc(NULL)) st->cnt++; sprintf(szdata,"%d frames written",st->cnt); SetDlgItemText(hDlg,IDC_STATUS,szdata); } break; case IDC_TRIGGER: st->en_trigger=IsDlgButtonChecked(hDlg, IDC_TRIGGER); break; case IDC_RESET: st->cnt=0; if (TTY.COMDEV!=INVALID_HANDLE_VALUE) SetDlgItemText(hDlg,IDC_STATUS,"0 frames written"); break; } return TRUE; break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; } return FALSE; }