C语言数据通过蓝牙传给APP之后发现问题。C语言中是Unsigned char 类型。安卓通过蓝牙

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数据通过蓝牙传给APP之后发现问题。C语言中是Unsigned char 类型。安卓通过蓝牙相关的知识,希望对你有一定的参考价值。

C语言数据通过蓝牙传给APP之后发现问题。C语言中是Unsigned char 类型。安卓通过蓝牙接受。安卓数据类型int,但是发现一个很大的问题。数据位0-127正常,再加一后变成了-128,发送数据到255后安卓显示数据为-1。发送的数据没任何问题。安卓是java语言。

数据类型级别由低到高分别为:char→int→unsigned→long。
转换时由低级别向高级别转换。
比如,有两个数的数据类型分别为:char型跟long型。
就要先char转换为long型(因为long级别比char高),再进行运算。
但是不能理解为:先将char转换成int,再转换成unsigned,再转换成long。
参考技术A 很明显,蓝牙发送的无符号类型数据被手机识别为了有符号型数据,只需要对接收的数据类型进行转换一下就好了 参考技术B public Dispatcher initDispatcher( HostConfig filterConfig )
Dispatcher dispatcher = createDispatcher(filterConfig);
dispatcher.init();
return dispatcher;
追问

问题找到了 byte类型变量的问题

c语言如何通过函数来改变已经赋初值的全局变量的值?

定义全局变量并赋初值,如何通过函数来改变全局变量的值,全局变量在后面的函数中要用到。
我要实现的是通过一个函数改变变量的值,将改变后的值传给另一个函数,两个函数之间不能调用

直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;

晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了
参考技术A 直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;

晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了啊!
参考技术B 晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了啊! 参考技术C 直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;
参考技术D 别在函数中使用与全局变量名字相同的变量就OK了,其他的都一样的.
当全局变量在函数中与局部变量名字相同时,自动屏蔽全局变量

以上是关于C语言数据通过蓝牙传给APP之后发现问题。C语言中是Unsigned char 类型。安卓通过蓝牙的主要内容,如果未能解决你的问题,请参考以下文章

如何从蓝牙模块中读取数据C语言程序

Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块

在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。

如何创建一个安卓手机的APP,用于模拟遥控器键盘,输出蓝牙信号?

C语言中利用scanf语句输入多个值的问题

C语言 怎样让一个指针的内容传给一个变量