通过我的USB连接我收到一些命令,我想让它们对我的驱动程序可读。如何使用USB发送数据并使用驱动程序进行读取?
第一个字符是字母S,之后有几个数字(4)进来。 我想将这个数字从asci转换为decimal,然后在其他函数中将它们写为HEX。最大大小可以是20位。
由于我是新来的C我有这个转换的问题。
如果有人能给我一些建议,我会很高兴。
u8 x;
u8 xx;
u8 xxx;
u8 xxxx;
u32 y;
void ProcessCommandUSB(u8 b_Data[USB_COMMAND_LENGTH],u8 b_DataLength)
{
switch (b_Data[0]) // process first byte
{
case '\r': // ignore
break;
case '\n': // ignore
break;
////// SPEED ///////
case 'S':
x= b_Data[1];
xx= b_Data[2];
xxx= b_Data[3];
xxxx= b_Data[4];
// I NEED TO CHECK IF VARIABLES ARE NUUMBERS, OTHERWISE ERROR.
if (x,xx,xxx,xxxx =='0')|(x,xx,xxx,xxxx =='1')|(x,xx,xxx,xxxx =='2')\
|(x,xx,xxx,xxxx =='3')|(x,xx,xxx,xxxx =='4')|(x,xx,xxx,xxxx =='5')\
|(x,xx,xxx,xxxx =='6')|(x,xx,xxx,xxxx =='7')|(x,xx,xxx,xxxx =='8')|(x,xx,xxx,xxxx =='9');
{
//to make asci char, decimal
x = (x-48)* 1000;
xx = (xx-48)* 100;
xxx =(xxx-48)* 10;
xxxx -= 48;
y=x+xx+xxx+xxxx;
}
//THIS PART OF CODE DOWN WORKS, AND I WANT TO WRITE THE BYTES RECEIVED
//WITH S COMMAND (Y), IN FUNCTION RUN INSTEAD OF 0x034444.
else
{
sprintf(vrni, "D Error\r");
}
USB_Send_String (vrni);
break;
case 'D': // version
if(b_Data[1] == '<')
{
RUN(REV, 0x034444);
sprintf(vrni, "nazaj\r");
....... //REST OF THE CODE WORKS
您的意思是'xx =(xx-48)* 100;'和'xxx =(xxx-48)* 10;'?在这两行中我看不到你的'(x-48)'的点。 –
是的! 对不起。 – surfer113
您的意思是抱歉代码错误,或者发布的代码不是您的代码? –