月光宝盒源码下载

news/2025/2/13 11:08:38/

游戏机月光宝盒源码运行视频

源码运行视频。

源码项目下载地址:

https://download.csdn.net/download/sb11011bs/16076152

 

其中串口按键处理部分代码片段:

#include “Com.h”
#include “Random.h”
#include “SerialPort.h”
#include “Hardware.h”
#include <stdio.h>
#include <string.h>
#include “TEA.h”const char* SerialPortName = “/dev/ttyS4”; //2
const int Budrate = 115200;
int serialPortFD = -1;enum Pack_Def
{
Pack_Def_Len = 0,
Pack_Def_CC1,
Pack_Def_CC2,
Pack_Def_Random,
Pack_Def_Data,
};const int DATA_PACK_MAX_LEN = 128;
const int InBufferLen = 4096;
unsigned char inBuffer[InBufferLen]={0};
int inBufferTop = 0;
int inBufferEnd = 0;
float nonePacketTime = 0;//******************************* ͨ�Ŵ�� ***************************************************************void SerialPushCharToInBuffer(unsigned char data)
{
inBuffer[inBufferEnd] = data;
if(++inBufferEnd >= InBufferLen) inBufferEnd = 0;
}int GetInBufferLen(void)
{
int len = inBufferEnd - inBufferTop;
if (len < 0) len += InBufferLen;
return len;
}void CopyDataFromInBuffer(unsigned char *data, int len)
{
int index = inBufferTop;
for (int i = 0; i < len; i++)
{
data[i] = inBuffer[index];
if(++index >= InBufferLen)
{
index = 0;
}
}
}void InBufferStepByStep(int step)
{
inBufferTop += step;
inBufferTop %= InBufferLen;
}unsigned char GetCheckCode(unsigned char *data, unsigned char len, unsigned char random)
{
unsigned char add = random;
unsigned char i = 0;
for(i = 0; i < len; i++)
{
add += data[i];
}
return add;
}int epcnt = 0;
bool GetMsgPack(unsigned char* data, int* len)
{
static unsigned char dataBuffer[DATA_PACK_MAX_LEN];if (GetInBufferLen() > 0)
{if(GetInBufferLen() >= inBuffer[inBufferTop]){if(inBuffer[inBufferTop] >= Pack_Def_Data + 8 && inBuffer[inBufferTop] <= DATA_PACK_MAX_LEN&& (inBuffer[inBufferTop] - Pack_Def_Data) % 8 == 0){CopyDataFromInBuffer(dataBuffer, inBuffer[inBufferTop]);if(GetCheckCode(&dataBuffer[Pack_Def_Data], dataBuffer[Pack_Def_Len] - Pack_Def_Data, dataBuffer[Pack_Def_Random]) == dataBuffer[Pack_Def_CC1]&& GetCheckCode(&dataBuffer[Pack_Def_Data], dataBuffer[Pack_Def_Len] - Pack_Def_Data, dataBuffer[Pack_Def_Random]^0xdb) == dataBuffer[Pack_Def_CC2]){//У��ɹ�//����int *p = (int*)(&dataBuffer[Pack_Def_Data]);int key[4];GetTeaKey(dataBuffer[Pack_Def_Random]^0x43, key);XXTea(p, key, -1 * (dataBuffer[Pack_Def_Len] - Pack_Def_Data) / 4);//�����ݱ��浽����for (int i = 0; i < dataBuffer[Pack_Def_Len] - Pack_Def_Data; i++){data[i] = dataBuffer[Pack_Def_Data + i];}*len = dataBuffer[Pack_Def_Len] - Pack_Def_Data;InBufferStepByStep(dataBuffer[Pack_Def_Len]);}else{InBufferStepByStep(1);*len = 0;}}else{InBufferStepByStep(1);*len = 0;}return true;}
}
*len = 0;
return false;}void CommSendData(unsigned char* data, int len)
{
static unsigned char dataBuffer[DATA_PACK_MAX_LEN];if(len + Pack_Def_Data > DATA_PACK_MAX_LEN) return;int aLen = (8 - len%8)%8 + len;dataBuffer[Pack_Def_Len] = aLen + Pack_Def_Data;	//���ݳ���
dataBuffer[Pack_Def_CC1] = 0;						//��
dataBuffer[Pack_Def_CC2] = 0;						//��
dataBuffer[Pack_Def_Random] = Rand.Rand(0, 0xff);	//���ֵ
//�������
int i = 0;
for(i = 0; i < len; i++)
{dataBuffer[Pack_Def_Data+i] = data[i];	
}
//Ϊ�˲���8�ı�����������ֵ
for(; i < aLen; i++)
{dataBuffer[Pack_Def_Data+i] = Rand.Rand(0, 0xff);//���ֵ;	
}//����
int *p = (int*)(&dataBuffer[Pack_Def_Data]);
int key[4];
GetTeaKey(dataBuffer[Pack_Def_Random]^0x43, key);
XXTea(p, key, aLen / 4);//������
dataBuffer[Pack_Def_CC1] = GetCheckCode(&dataBuffer[Pack_Def_Data], aLen, dataBuffer[Pack_Def_Random]); 
dataBuffer[Pack_Def_CC2] = GetCheckCode(&dataBuffer[Pack_Def_Data], aLen, dataBuffer[Pack_Def_Random]^0xdb); 
PortSend(serialPortFD, (char*)dataBuffer, aLen + Pack_Def_Data);}//************************************************************************************************************************S_KeyState PlayerKey[PK_Count];void ClearKey(void)
{
for (int j = 0; j < PK_Count; j++)
{
PlayerKey[j].click = false;
PlayerKey[j].u_dt = 0;
PlayerKey[j].d_dt = 0;
PlayerKey[j].a_dt = 0;
PlayerKey[j].state = false;
}
}unsigned int get_key =0;void GetKeyData(unsigned char* data)
{
memcpy((unsigned char*)&get_key, data, 4);for(int i = 0; i < PK_Count; i++)
{if((get_key & (0x00000001<<i)) > 0){//����if(!(PlayerKey[i].state)){PlayerKey[i].click = true;PlayerKey[i].u_dt = 0;PlayerKey[i].a_dt = 0;}PlayerKey[i].state = true;}else{//�ɿ�if(PlayerKey[i].state){PlayerKey[i].d_dt = 0;PlayerKey[i].a_dt = 0;}PlayerKey[i].state = false;PlayerKey[i].click = false;}
}}void DoInData(void)
{
static unsigned char data[DATA_PACK_MAX_LEN];
static int len = 0;while(GetMsgPack(data, &len))
{nonePacketTime = 0;switch(data[0]){case 1:			// ɨ�谴��GetKeyData(&data[1]);break;default:break;}
}}void ComUpdate(float dt)
{
//��������
nonePacketTime += dt;char buffer[1024];
int len = 0;
do 
{len = PortRecv(serialPortFD, buffer, 1024);if(len <= 0)	break;else{nonePacketTime = 0;for (int i = 0; i < len; i++){SerialPushCharToInBuffer((unsigned char)buffer[i]);}DoInData();}
} while (true);

 


http://www.ppmy.cn/news/280509.html

相关文章

网页特效——潘多拉魔盒(.html)

目录 &#x1f49e;潘多拉魔盒&#x1f4e2; ✨ 一个温暖的家.html⛳️ &#x1f49e;潘多拉魔盒&#x1f4e2; ✨ 一个温暖的家.html⛳️ <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv…

冰点下载器手机版apk_冰点下载器安卓版下载

冰点下载器安卓版下载&#xff0c;这是一款非常强大的下载工具&#xff0c;主要是下载文库里的东西&#xff0c;让你可以获得更多的文本数据&#xff0c;更好的总结资料。更好的随时开启对文档的处理&#xff0c;是业界神器&#xff0c;赶紧来试试吧。 冰点下载器安卓版介绍 这…

穿越火线枪战王者服务器维护,穿越火线枪战王者-CF正版官方手游-官方网站-腾讯游戏...

在赛事体系的不断完善下&#xff0c;穿越火线已经从一个游戏发展为了一项电竞项目&#xff0c;而随着赛事的发展、粉丝群体和赛事规模的日益壮大&#xff0c;联赛体质的改变更是势在必行。在这个赛季结束后&#xff0c;穿越火线双端联赛也将在2019年秋季赛首次开启固定席位制&a…

微智魔盒骗局_微智魔盒官宣

原标题&#xff1a;微智魔盒官宣 微智魔盒官方宣传视频 微达国际集团创建于2011年&#xff0c;是一家坚持创新的集科研、产销、服务为一体的智能化产业平台&#xff0c;致力于国际领先的专注人工智能领域的产业投资、项目孵化、教育培训&#xff0c;并提供终极解决方案。 集团创…

187_零线和火线

火线,英文简写L(LIVE),一般为红色或黄色或绿色&#xff0c;零线,英文简写N(NEUTRAL),一般为蓝色。 零线火线&#xff0c;专指&#xff1a;民用电的供电线路&#xff0c;市电的交流供电电压为220伏特&#xff08;V&#xff09;(不同的国家不一样&#xff0c;中国是220V)。它包括…

单火线取电原理

由于近期家中装修&#xff0c;想整成智能家居&#xff0c;以前自己做过智能家居的小玩意&#xff0c;勉强可以进行控制&#xff0c;不想再花钱买智能开关了&#xff0c; 但是在实际的安装出现了问题&#xff0c;老式的开关方便父母&#xff0c;但是装上之后&#xff0c;我们的…

盲盒商城系统玩法大讲坛

盲盒商城APP开发&#xff0c;幸运盲盒软件系统&#xff0c;盲盒app开发多少钱&#xff0c;盲盒商城怎么做&#xff0c;盲盒平台开发&#xff0c;冠品网络科技开发技术公司专业定制各类盲盒&#xff0c;成品等。很多人不知道什么是盲盒&#xff0c;但他们只是对这个产品感兴趣&a…

天猫盒子android tv,天猫魔盒刷机教程 把天猫魔盒刷成安卓系统教程(附刷机包)...

对于突如其来的软件整顿&#xff0c;目前还可以用的几个影视软件芒果TV、华数TV、CIBN高清视频&#xff0c;大家是不是觉得挺难解决的呢&#xff1f;之前我们提到过可以把yunos系统刷成安卓系统&#xff0c;今天就跟大家分享下“天猫魔盒刷机教程”。 刷机包固件下载地址&#…