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;
}
Example #2
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;
}
Example #3
0
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;
}
Example #4
0
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]);

	}
}
Example #5
0
 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();
 }