【cc3200】向服务器发送温度数据
来源:互联网 发布:数据库添加数据 编辑:程序博客网 时间:2024/05/22 02:03
基于tcp_socket和i2c_demo修改而成
1、打开i2c_demo的PinMuxConfig,将里面关于I2C的配置复制过来
MAP_PRCMPeripheralClkEnable(PRCM_I2CA0, PRCM_RUN_MODE_CLK); // // Configure PIN_01 for I2C0 I2C_SCL // MAP_PinTypeI2C(PIN_01, PIN_MODE_1); // // Configure PIN_02 for I2C0 I2C_SDA // MAP_PinTypeI2C(PIN_02, PIN_MODE_1);
在mian(){}中加入这么一句话
I2C_IF_Open(I2C_MASTER_MODE_FST);
然后记得把i2c_if.c复制过来
2、写一个用来获取温度的函数,这一段参考郭书军老师的《CC3200应用指南》
void getTemp(char *temp){ int iRetVal=0; unsigned char ucData[2]; ucData[0]=1;//初始化 I2C_IF_Write(0x41,&ucData[0],1,0);//地址指向温度寄存器 //获取温度 iRetVal=I2C_IF_Read(0x41,&ucData[0],2);//读取温度值存入ucData //读取成功,处理并显示温度 if(!iRetVal){ unsigned short usTemp=(ucData[0]<<8)+ucData[1]; if( !(usTemp & 0x8000) ){//处理正温度值 int i=0; i+=sprintf(temp,"%d.",usTemp>>7); i+=sprintf(temp+i,"%d",( (usTemp&0x7f)*25 )>>5); } }}
3、在WuartTransfer方法的接收数据部分增加一个检测,关注cRxBufNum
int WuartTransfer(unsigned long ulBase,int iSockID){ UART_PRINT("进入WuartTransfer\n\r\n\r"); int iStatus=0; char cTxBuf[100]; char cRxBuf[100]; char cTemp[10]; char cGetChar; char iCounter=0; while(1){ cGetChar=MAP_UARTCharGetNonBlocking(ulBase); if(cGetChar!=0xff){ //MAP_UARTCharPut(ulBase,cGetChar); cTxBuf[iCounter++]=cGetChar; //0x0d回车Enter,0x1b退出Esc if(cGetChar==0x0d||cGetChar==0x1b){ UART_PRINT("\r\n发送的数据为:%s\r\n",cTxBuf); UART_PRINT("\r\n当检测到串口输入的数据中包含回车或十六进制1b时进入此方法\r\n"); cTxBuf[iCounter++]=0x0a;//回车(0x0d)和换行(0x0a),发送数据要在后面加0d0a,即\r\n iStatus=sl_Send(iSockID,cTxBuf,iCounter,0);//发送给服务端 if(iStatus<=0){ ASSERT_ON_ERROR(sl_Close(iSockID)); UART_PRINT("发送数据失败\n\r\n\r"); break; } //判断输入的到底是哪个 if(cGetChar==0x0d){ iCounter=0; }else{ break; } }//if(cGetChar==0x0d||cGetChar==0x1b) }//if(cGetChar!=0xff) iStatus=sl_Recv(iSockID,cRxBuf,100,0); if(iStatus>0){ if( cRxBuf[iStatus-2]==0x0d ){ cRxBuf[iStatus]=0; UART_PRINT("\r\n\r\nsl_Recv方法执行成功,iStatus=%d,接收到的数据为\r\n\r\n",iStatus); UART_PRINT("\r\n\r\n%s\r\n\r\n",cRxBuf); int cRxBufNum=atoi(cRxBuf); if(cRxBufNum==0){ GPIO_IF_LedOff(MCU_RED_LED_GPIO);//收到0灭灯 } if(cRxBufNum==1){ GPIO_IF_LedOn(MCU_RED_LED_GPIO);//收到1亮灯 } if(cRxBufNum==3){ //收到3返回温度值 getTemp(cTemp); sprintf(cTxBuf,"now temp=%s",cTemp); iStatus=sl_Send(iSockID,cTxBuf,100,0);//发送给服务端 if(iStatus<=0){ ASSERT_ON_ERROR(sl_Close(iSockID)); UART_PRINT("发送数据失败\n\r\n\r"); break; } } }else{ break; } }//if(iStatus>0) }//while(1) return iStatus;}
4、为了简便,我还是用socket工具模拟服务器,
先打开串口助手,然后选择连接到服务端,发送一个2,服务端显示
【23:00:08 收到数据:2】
然后服务端发送1,单片机接收到数据打印在串口上,并让LED灯点亮
服务端发送0,单片机串口显示0,让LED灯熄灭
服务端发送3,单片机串口显示3,并且返回温度信息,服务端显示
【23:00:37 收到数据: now temp=29.43】
单片机串口
服务端:
其他数据的获取函数
void getAcceleration(char* acc){ int iRetVal=0; unsigned char ucData2[6]; ucData2[0]=2; I2C_IF_Write(0x18,&ucData2[0],1,0);//地址指向加速度寄存器 iRetVal=I2C_IF_Read(0x18,&ucData2[0],6);//读取加速度值存入ucData2 if(!iRetVal){//成功,处理加速度数据 int i=0; i+=sprintf(acc+i,"x=%03d ",ucData2[1]); i+=sprintf(acc+i,"y=%03d ",ucData2[3]); i+=sprintf(acc+i,"z=%03d ",ucData2[5]); }}void getMac(char *mac){ //获取mac地址 _u8 macAddressVal[SL_MAC_ADDR_LEN]; _u8 macAddressLen = SL_MAC_ADDR_LEN; sl_NetCfgGet(SL_MAC_ADDRESS_GET,NULL,&macAddressLen,(_u8 *)macAddressVal); //将整型数组转换成字符串数组 int dizhi=0,i=0; for(;i<6;i++){ dizhi+=sprintf(mac+dizhi,"%x.",macAddressVal[i]); }}void getGPIO(char* gpio){ UART_PRINT("\r\n\r\n进入getGPIO方法\r\n\r\n"); float a=0; a=getTemp(); if( a>30 ){//判断是否大于30 MAP_GPIOPinWrite(GPIOA1_BASE,2,2);//红灯亮 strcpy(gpio,"点亮"); }else{ MAP_GPIOPinWrite(GPIOA1_BASE,2,0);//红灯熄灭 strcpy(gpio,"熄灭"); }}
直接复制就能用
阅读全文
0 0
- 【cc3200】向服务器发送温度数据
- 向服务器发送数据
- 使用JSON向服务器发送数据
- Ajax - 使用JSON向服务器发送数据
- 用Javascript向服务器发送数据
- C#向服务器发送XML数据
- 使用JSON向服务器发送数据
- Unity3d向web服务器发送数据
- 客户端如何向https服务器发送数据
- 服务器向客户端发送数据自动中断
- Unity3d向web服务器发送数据
- 安卓向服务器发送List数据
- Ajax使用JSON向服务器发送数据
- 客户端如何向https服务器发送数据
- post请求向服务器发送数据
- java客户端向服务器发送数据
- http服务向服务器发送并接受数据--------------HttpClient对象向服务器发送并接受数据
- 通过libcurl向服务器发送数据,返回的数据说明
- goLang中的基础类型简单应用
- HDU 2415 树形DP
- ZOJ
- gulp 给静态资源文件添加hash(md5)后缀 防止缓存
- POJ 1269 Intersecting Lines(直线相交判断,求交点)
- 【cc3200】向服务器发送温度数据
- 数据分析(第一天)
- CSS+div
- 英特尔—最大区间
- 今天复习了一下Java基础
- JAVA Spring web mvc 学习 之 4:注解
- numpy中的ndarray与array的区别、不同
- hdu 1250 大数
- Common (一)—— CMemBuffer