int main() { unsigned char msb,lsb; int digi_val=5; //char s[256]; //int len; int i; OpenCom(); for(i=0;i<10000;i++){ // sending data //WriteComChar(0x42); WriteComChar(0x43); WriteComChar(0x41);//WriteCom("ABCDE", 5); Sleep(1); // receiving data //len = ReadCom(s, sizeof(s)-1); s[len] = 0; printf("%s\n", s); msb=ReadComChar(); lsb=ReadComChar(); //printf("%d\t",(int)msb); //printf("%d\t",(int)lsb); digi_val=(int)msb*256+(int)lsb; if (i%100==5) printf("%lf\n",digi_val*3.314/4096.0); //getchar(); } CloseCom(); printf("\nPress a key to exit"); getch(); return 0; }
HANDLE SerialPortInit(SerialPort SP) { HANDLE Hcom = NULL; /*����*/ if (OpenCom(&Hcom, SP.ComName, GENERIC_READ | GENERIC_WRITE, 0) == FALSE) { return NULL; } /*���û������볬ʱ*/ if (SetBufAndTimeOut(Hcom) == FALSE) { return NULL; } /*����DCB*/ if (SetDcb(Hcom, SP.BaudRate, SP.ByteSize, SP.Parity, SP.StopBits) == FALSE) { return NULL; } /*����������*/ if (PurgeComm(Hcom, PURGE_TXCLEAR | PURGE_RXCLEAR) == FALSE) { return NULL; } return Hcom; }
int TFComm::Open() //打开通讯层接口,允许接收发送数据 { switch(m_CurCommPort) { case CMPT_RS232: if(OpenCom()) m_Connected = true; else m_Connected = false; break; case CMPT_SOCKET: try { if (Protocol == CMPT_PROTOCOL_TCP){ if (SockMode == CMPT_SOCK_CLIENT){ // Create connection to server ClientSocket->Host = FIPServer; ClientSocket->Port = FIPPort; ClientSocket->Active = true; }else{ // Start listening on local ServerSocket->Port = FIPPort; ServerSocket->Active = true; } }else if (Protocol == CMPT_PROTOCOL_UDP){ // Using Indy components access UDP protocol if (SockMode == CMPT_SOCK_CLIENT){ // Create connection to server IdUDPClient1->Host = FIPServer; IdUDPClient1->Port = FIPPort; IdUDPClient1->Active = true; }else{ // Start listening on local IdUDPServer1->Bindings->Items[0]->Port = FIPPort; IdUDPServer1->Active = true; } } m_Connected = true; CheckConnectTmr->Enabled = true; } catch(Exception& exception) { if (m_pfcTextMessage) m_pfcTextMessage("打开网络连接时出错." + exception.Message); m_Connected = false; }catch(...){ } break; } return m_Connected; }
void AttachAllComs(PDRIVER_OBJECT driver) { ULONG i; PDEVICE_OBJECT com_ob; NTSTATUS status; for (i = 0; i < MAX_COM_ID;i++) { com_ob = OpenCom(i, &status); if (com_ob == NULL) continue; AttachDevice( driver, com_ob, &s_fltobj[i], &s_nextobj[i]); } }
int main(int argc, char *argv[]) { QApplication app(argc, argv); // Настроить вывод кириллицы в виджете. QTextCodec::setCodecForTr (QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); QTextCodec::setCodecForLocale (QTextCodec::codecForName("Windows-1251")); int status=-1; qWarning() << "Opening database" << endl; // Печать установленных драйверов MySQL. QStringList driverList; driverList = QSqlDatabase::drivers(); qDebug() << "Available db drivers: " ; QStringList::const_iterator it; for (it = driverList.constBegin();it != driverList.constEnd(); ++it) qDebug() << (*it).toLocal8Bit().constData() << " "; qDebug() << endl; // Открываем базу данных "base" ,используя драйвер QODBC. // QString namebase = "basedon"; QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName(namebase); // печатаем ошибку, если не открыли. if(!(status=db.open())) {qDebug() << "Cannot open database:" << db.lastError().driverText() << db.lastError().databaseText(); messbox("База данных "+namebase+" не открыта",db.lastError().driverText()); return -1; } qDebug() << "Opened database:" ; qDebug() << "database base:\n" << db.tables() << "\n"; // Из таблицы kp базы данных создаем внутренний // аналог - словарь h_KP. if ( (status=Read_KP()) !=0 ) return status; // таблица sdb_recode содержит подключение параметров к ADAM. // QSqlQuery query; if(! query.exec("SELECT * FROM sdb_recode")) { qDebug() << "Unable to execute \" query.exec(\"SELECT * FROM sdb_recode\") \"\n "; messbox("Unable to execute query.exec"); return(-1); } struct s_sdb_recode *sdb_recode; QSqlRecord rec = query.record(); int s_id; int iport, iaddress, ibit; int oport, oaddress, obit; int itestkey, otestkey; while(query.next()){ sdb_recode= new struct s_sdb_recode; s_id= sdb_recode->S_ID=query.value(rec.indexOf("S_ID")).toInt(); sdb_recode->PNAME=query.value(rec.indexOf("PNAME")).toString(); sdb_recode->NOTE=query.value(rec.indexOf("NOTE")).toString(); sdb_recode->I_NKP=query.value(rec.indexOf("I_NKP")).toInt(); sdb_recode->I_NSKO=query.value(rec.indexOf("I_NSKO")).toInt(); sdb_recode->I_IDGR=query.value(rec.indexOf("I_IDGR")).toInt(); sdb_recode->I_NR=query.value(rec.indexOf("I_NR")).toInt(); sdb_recode->O_GROUPL=query.value(rec.indexOf("O_GROUPL")).toInt(); sdb_recode->O_NRLAMP=query.value(rec.indexOf("O_NRLAMP")).toInt(); sdb_recode->O_GROUPK=query.value(rec.indexOf("O_GROUPK")).toInt(); sdb_recode->O_NRKEY=query.value(rec.indexOf("O_NRKEY")).toInt(); sdb_recode->O_KEY_INV=query.value(rec.indexOf("O_KEY_INV")).toInt(); iport= sdb_recode->I_PORT_ADAM=query.value(rec.indexOf("I_PORT_ADAM")).toInt(); iaddress = sdb_recode->I_ADR_ADAM=query.value(rec.indexOf("I_ADR_ADAM")).toInt(); ibit = sdb_recode->I_NR_ADAM=query.value(rec.indexOf("I_NR_ADAM")).toInt(); oport= sdb_recode->O_PORT_ADAM=query.value(rec.indexOf("O_PORT_ADAM")).toInt(); oaddress= sdb_recode->O_ADR_ADAM=query.value(rec.indexOf("O_ADR_ADAM")).toInt(); obit= sdb_recode->O_NR_ADAM=query.value(rec.indexOf("O_NR_ADAM")).toInt(); sdb_recode->A_TYPE=query.value(rec.indexOf("A_TYPE")).toInt(); sdb_recode->TAGE_LAMP=query.value(rec.indexOf("TAGE_LAMP")).toString(); sdb_recode->TAGE_KEY=query.value(rec.indexOf("TAGE_KEY")).toString(); sdb_recode->TAGE_TIT=query.value(rec.indexOf("TAGE_TIT")).toString(); sdb_recode->state_key= -1; TestBound(iport, iaddress, ibit, s_id); // Проверить на допустимые значения. TestBound(oport, oaddress, obit, s_id); // Определим в массиве masCOMPort адреса заявленных портов ADAM // для OpenCom(). if (sdb_recode->O_PORT_ADAM != 0) masCOMPort[ sdb_recode->O_PORT_ADAM ] = 1; if (sdb_recode->I_PORT_ADAM != 0) masCOMPort[ sdb_recode->I_PORT_ADAM ] = 1; // Внесем в словарь hash_sdb_recode очередную запись базы данных. if (!hash_sdb_recode.contains(sdb_recode->S_ID)) hash_sdb_recode[sdb_recode->S_ID] = sdb_recode; else { qDebug() << "base error: id dublicate\n"; return -1;} // Формируем словарь h_ADAM_iConnections : ADAM присоедиение(ввод) -> параметр БД. // С его помощью ищем дубликатные присоединения. // Создаем интегральный ключ словаря. itestkey = iport | iaddress << 8 | ibit << (8*2); if ( iport != 0){ if (!h_ADAM_iConnections.contains(itestkey)) h_ADAM_iConnections[itestkey] = s_id; else { messbox( QString("Дубликатное подключение параметров\n БД с индексами %1 %2") .arg(s_id) .arg(h_ADAM_iConnections[itestkey])); return -1; } } // Формируем словарь h_ADAM_oConnections : ADAM присоедиение(вывод) -> параметр БД. // С его помощью ищем дубликатные присоединения. // Создаем интегральный ключ словаря. otestkey = oport | oaddress << 8 | obit << (8*2); if ( oport != 0){ if (!h_ADAM_oConnections.contains(otestkey)) h_ADAM_oConnections[otestkey] = s_id; else { messbox( QString("Дубликатное подключение параметров\n БД с индексами %1 %2") .arg(s_id) .arg(h_ADAM_oConnections[otestkey])); return -1; } } } // Открыть порты ADAM'ов. // status=OpenCom(); if (status){ // Не все порты открыты. QString errports; // Определить - какие. QString allports = "\n из заявленных "; for (int i=0; i<MAX_PORT; i++){ // "Собираем" все заявленные порты. if ( masCOMPort[i] != 0) allports += QString(" %1").arg(i); // На индексах не окрытых портов в masCOMPort[] стоят -1. if ( masCOMPort[i] < 0 ) errports+= QString(" %1").arg(i); else continue; } messbox("Ошибка при открытии портов ADAM: " + errports + allports); } Window window; window.setWindowTitle(QString("СДЩ(%1) версия %2").arg(namebase).arg(VERSION)); window.show(); return app.exec(); }