VC6.0【学习心得】如何把串口数据通过socket发送到远程服务器并存入数据库。

【我真的没有很花心要写这么多语言,但是我们老师总是有杂七杂八的项目要交给我们做】

之前已经做到了使用DS18B20温度传感器,通过keil u version4把程序烧到板子里,在串口调试助手里面已经看到了串口的温度数据。

然后我使用Taltech这个软件,将串口数据转为socket发送到远程电脑上,

547345b100019ab904690464.jpg

里面只需要填写 Remote Host IP Address和Remote Port,IP使用20013。

只需要填写IP地址和端口号就行了。


在服务器端。使用USR_TCP232_Test这个软件来查看数据是否接收到。

547345df00013f6a05000331.jpg


选择Tcp Server,启动20013端口的监听,这个端口和刚刚TalTech上设置相同,然后看看能否收到数据。

这是我所收到的数据。


接着就是传到数据库里面去了。

#include "ADO.h"
BOOL CMySocketRecvDlg::SaveDataToDB(CString strRecv)
{
 CString m_strConnectionString="";
 CString strDbType="MySQL";
 CString m_strDBUser="ylx",m_strDBPassword="ylx",m_strServerName="ylx";
 CAdoConnection* m_pConnection=NULL;
 CAdoRecordSet* m_pRecordSet=NULL;
 BOOL bOk=FALSE,m_bConnected=FALSE;
 if(strDbType =="MySQL")
 {
  m_strConnectionString="DSN=ADOLinkMySQL;User ID="+ m_strDBUser+";password="+ m_strDBPassword+";Data Source="+m_strServerName+";";
 }
 try
 {
  m_pConnection=new CAdoConnection();
  if(m_pConnection->Open(m_strConnectionString)){
   bOk=TRUE;
   m_bConnected=TRUE;
  }else{
   ShowMsg("打开连接不成功!");
  }
  //保存数据
  CString strDeviceId,strDeviceName,strTemperature,strHumidity;
  GetInfoFromReceiveData(strRecv,strDeviceId,strDeviceName,strTemperature,strHumidity);
  CString strSql;
  strSql="insert into video_record(device_id,device_name,temperature,humidity,register,register_time) values('"+strDeviceId+"','"+strDeviceName+"','"+strTemperature+"','"+strHumidity+"','admin','"+CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")+"')";
  ShowMsg(strSql);
  m_pConnection->Execute(strSql);
  ShowMsg("保存进了数据库");
  //然后释放连接
  m_pConnection->Close();
  delete m_pConnection;
 }
 catch(...)
 {
  ShowMsg("打开数据库出错");
  bOk=FALSE;
 }
 return 0;
}

做到这里的时候,程序运行的时候显示“打开连接不成功!”然后“保存进了数据库”。然后打开MySQL发现表还是没有新的数据记录。

猜测是没有连上数据库,但是程序还是继续运行了所导致的。

连不上数据库的可能是没有配置ODBC数据源。


明天希望能解决这个问题。

【标签里面没有C语言好难过】


幸大大
浏览 2460回答 2
2回答

hasty

C语言快要上线了。

慕九州3535911

有没有Taltech和USR_TCP232_Tes软件的源码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL