尊敬的专家:
感谢您今天的患者解决方案。
首先、我想说您是对的。 实际上、BT 代码没有问题。 由于我们设计的电路板、问题困扰了我。 现在、我重写一些配置来替换它、BT 和 PC 可以成功通信。
只有16个字节的数据传输仍然存在、接下来我应该做什么。
谢谢、此致。
秋奇
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的专家:
感谢您今天的患者解决方案。
首先、我想说您是对的。 实际上、BT 代码没有问题。 由于我们设计的电路板、问题困扰了我。 现在、我重写一些配置来替换它、BT 和 PC 可以成功通信。
只有16个字节的数据传输仍然存在、接下来我应该做什么。
谢谢、此致。
秋奇
尊敬的 QJ Wang:
我的 PC 端代码如下所示。
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*命令已发送数据
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
get_BinaryData( fileName );
ulAddress = 0x00010100;
零内存(&frameinfo、sizeof (CAN_obj));
frameinfo.DataLen= 8;
frameinfo.RemoteFlag = 0;
frameinfo.ID = CAN_COMMAND_SEND_DATA;
ulLength = image_size;
//#3、循环浏览要下载的代码中的数据。
for (ulOffset = 0;ulOffset < ulLength;ulOffset += 8)
{
//构建发送数据命令。
for (ulIdx = 0;ulIdx < 8;ulIdx++)
{
frameinfo.Data[ulIdx]= image[ulOffset + ulIdx];
}
//查看整个缓冲区是否包含要下载的有效数据。
if ((ulOffset + ulIdx)> ulLength)
{
frameinfo.DataLen = ulLength - ulOffset;
//发送包含要下载的剩余数据的发送数据命令。
//SLEEP (1);
SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
//入口参数--m_devtype:设备名;设备索引号;第几路CAN;要发送的数据帧数组首地址;要发送数据帧数组的长度
返回实际发送的帧数 μ s
// canTxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
//VCS 用来存储CAN状态的CAN μ STATUS结构指针。
}
其他
{
frameinfo.DataLen = 8;
SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
睡眠(20);
//入口参数--m_devtype:设备名;设备索引号;第几路CAN;要发送的数据帧数组首地址;要发送数据帧数组的长度
执行{
接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);
//入口参数--m_devtype:设备名;设备索引号;第几路CAN;用来接收数据帧的数组首指针地址;用来接收的数据帧数组的长度,等待超时100 MS
返回实际读取的帧数 μ s
} while (receve_FrmFlag < 0);
如果(SEND_ON_FRAMFlag < 0)
{
ShowInfo ("写入失败"、2);
}
rcvID = ReceiveBuf[0].ID;
rcvData = ReceiveBuf[0].Data[0];
rcvDataLen = ReceiveBuf[0].DataLen;
if ((rcvID!= 0x05a6)&&(rcvData!= 0))
{
printf ("- COMMAND_SEND_DATA 失败!\n");
}
}
接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、10);
//入口参数--m_devtype:设备名;设备索引号;第几路CAN;用来接收数据帧的数组首指针地址;用来接收的数据帧数组的长度,等待超时100 MS
返回实际读取的帧数 μ s
canRxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
rcvID = ReceiveBuf[0].ID;
rcvData = ReceiveBuf[0].Data[0];
rcvDataLen = ReceiveBuf[0].DataLen;
if ((rcvID!= 0x07F4)&&(rcvData!= 0))
{
printf ("- COMMAND_SEND_DATA 失败!\n");
}
}
谢谢、此致
秋奇
尊敬的 QJ Wang:
我的 PC 代码 关于发送数据、如下所示。
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*命令已发送数据
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
get_BinaryData( fileName );
ulAddress = 0x00010100;
零内存(&frameinfo、sizeof (CAN_obj));
frameinfo.DataLen= 8;
frameinfo.RemoteFlag = 0;
frameinfo.ID = CAN_COMMAND_SEND_DATA;
ulLength = image_size;
//#3、循环浏览要下载的代码中的数据。
for (ulOffset = 0;ulOffset < ulLength;ulOffset += 8)
{
//构建发送数据命令。
for (ulIdx = 0;ulIdx < 8;ulIdx++)
{
frameinfo.Data[ulIdx]= image[ulOffset + ulIdx];
}
//查看整个缓冲区是否包含要下载的有效数据。
if ((ulOffset + ulIdx)> ulLength)
{
frameinfo.DataLen = ulLength - ulOffset;
//发送包含要下载的剩余数据的发送数据命令。
//SLEEP (1);
SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
// canTxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
}
其他
{
frameinfo.DataLen = 8;
SEND_OE_FRAMFlag=发送(USBCAN2、0、帧信息、1);
睡眠(20);
执行{
接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、100);
} while (receve_FrmFlag < 0);
如果(SEND_ON_FRAMFlag < 0)
{
ShowInfo("write fail",2);
}
rcvID = ReceiveBuf[0].ID;
rcvData = ReceiveBuf[0].Data[0];
rcvDataLen = ReceiveBuf[0].DataLen;
if ((rcvID!= 0x05a6)&&(rcvData!= 0))
{
printf ("- COMMAND_SEND_DATA 失败!\n");
}
}
接收帧标志=接收(USBCAN2、0、ReceiveBuf、50、10);
canRxstateFlag=ReadCANStatus (USBCAN2、0、&vcs);
rcvID = ReceiveBuf[0].ID;
rcvData = ReceiveBuf[0].Data[0];
rcvDataLen = ReceiveBuf[0].DataLen;
if ((rcvID!= 0x07F4)&&(rcvData!= 0))
{
printf ("- COMMAND_SEND_DATA 失败!\n");
}
}
谢谢、此致
秋奇