📄 main.c
字号:
}
Motor(2,1,40,4); //再向下走40步
inStep(add1+60,PumpGet);
UART1_SendStr(PumpGet); //再吸20ul空气
DelayNS(400); //延时
}
if(Add2Flag == 1)
{
MoveDisk(add2num);
Motor(2,1,SetSDStep,4); //向下走SetSDStep步,进入样品盘
DelayNS(100); //延时
inStep(add1+add2+60,PumpGet);
UART1_SendStr(PumpGet); //取样
DelayNS(600); //延时
M2Position_ini(); //往上走到初始位置
Motor(2,1,80,4); //先向下走80步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,40,4); //再向下走40步
inStep(add1+add2+80,PumpGet);
UART1_SendStr(PumpGet); //再吸20ul空气
DelayNS(400); //延时
}
if(Add3Flag == 1)
{
MoveDisk(add3num);
Motor(2,1,SetSDStep,4); //向下走SetSDStep步,进入样品盘
DelayNS(100); //延时
inStep(add1+add2+add3+80,PumpGet);
UART1_SendStr(PumpGet); //取样
DelayNS(600); //延时
M2Position_ini(); //往上走到初始位置
Motor(2,1,80,4); //先向下走80步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,40,4); //再向下走40步
inStep(add1+add2+add3+100,PumpGet);
UART1_SendStr(PumpGet); //再吸20ul空气
DelayNS(400); //延时
}
MoveDisk(samplenum);
Motor(2,1,SetSDStep,4); //向下走SetSDStep步,进入样品盘
DelayNS(100); //延时
if(Add1Flag == 1 & Add2Flag == 1 & Add3Flag == 1)
{
inStep(sample+add1+add2+add3+100,PumpGet);
}
else if(Add1Flag == 1 & Add2Flag == 1)
{
inStep(sample+add1+add2+80,PumpGet);
}
else if(Add1Flag == 1)
{
inStep(sample+add1+60,PumpGet);
}
else
{
inStep(sample+40,PumpGet);
}
UART1_SendStr(PumpGet); //取样
DelayNS(600); //延时
M2Position_ini(); //往上走到初始位置
if(Add1Flag == 1 & Add2Flag == 1 & Add3Flag == 1)
{
inStep(sample+add1+add2+add3+120,PumpGet);
}
else if(Add1Flag == 1 & Add2Flag == 1)
{
inStep(sample+add1+add2+100,PumpGet);
}
else if(Add1Flag == 1)
{
inStep(sample+add1+80,PumpGet);
}
else
{
inStep(sample+60,PumpGet);
}
UART1_SendStr(PumpGet); //再吸20ul空气
DelayNS(400); //延时
//Add1Number = 0;
//Add1Sample = 0;
//Add2Number = 0;
//Add2Sample = 0;
//Add3Number = 0;
//Add3Sample = 0;
//Add1Flag = 0;
//Add2Flag = 0;
//Add3Flag = 0;
//对准石墨管
while((IO1PIN & M3D)>>18 == 1) //逆转,走到4不挡为止
{
Motor(3,1,1,4);
}
Motor(2,1,80,4); //先向下走80步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,SetGFStep,4); //向下走SetGFStep步,进入石墨管
DelayNS(100); //延时
UART1_SendStr(PumpAirL); //进样,管子里剩20ul空气
DelayNS(800); //延时
M2Position_ini(); //上下电机初始化
//Continue[10] = {'o','u','t','g','f','#','#','#','#','#'};
Continue[0] = 'o';
Continue[1] = 'u';
Continue[2] = 't';
Continue[3] = 'g';
Continue[4] = 'f';
Continue[5] = '#';
Continue[6] = '#';
Continue[7] = '#';
Continue[8] = '#';
Continue[9] = '#';
M3Position_ini(); //左右电机初始化
////Continue[10] = {'x','c','o','n','t','i','n','u','e','#'};
//Continue[0] = 'x';
//Continue[1] = 'c';
//Continue[2] = 'o';
//Continue[3] = 'n';
//Continue[4] = 't';
//Continue[5] = 'i';
//Continue[6] = 'n';
//Continue[7] = 'u';
//Continue[8] = 'e';
//Continue[9] = '#';
CL(); //对准清洗槽
Motor(2,1,SetCLStep,4); //向下走SetCLStep步,进入清洗槽
UART1_SendStr(PumpIniQ); //向串口发送字符串,泵初始化
DelayNS(800); //延时
USB_WriteEndpoint(3, 10, Continue);//GenEpBuf); /* 发送10个字节到PC */
UART1_SendStr(PumpCln);
DelayNS(900); //延时
USB_WriteEndpoint(3, 10, Continue);//GenEpBuf); /* 发送10个字节到PC */
UART1_SendStr(PumpCln);
DelayNS(900); //延时
USB_WriteEndpoint(3, 10, Continue);//GenEpBuf); /* 发送10个字节到PC */
UART1_SendStr(PumpIni); //向串口发送字符串,泵初始化
DelayNS(800); //延时
USB_WriteEndpoint(3, 10, Continue);//GenEpBuf); /* 发送10个字节到PC */
//Continue[0] = 'o';
//Continue[1] = 'u';
//Continue[2] = 't';
//Continue[3] = 'c';
//Continue[4] = 'l';
//Continue[5] = '0';
//Continue[6] = '0';
//Continue[7] = '0';
//Continue[8] = '0';
//Continue[9] = '#';
SampleOverFlag = 1; //进样结束标志位置1
M2Position_ini(); //往上走到初始位置
Continue[0] = 'x';
Continue[1] = 'c';
Continue[2] = 'o';
Continue[3] = 'n';
Continue[4] = 't';
Continue[5] = 'i';
Continue[6] = 'n';
Continue[7] = 'u';
Continue[8] = 'e';
Continue[9] = '#';
SampleOverFlag = 0; //进样结束标志位置0
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else
{
USB_WriteEndpoint(3, 10, NoSet);//GenEpBuf); /* 发送10个字节到PC */
}
}
////////////////////////////////////////////////////////////////
int main(void)
{
INT8U err;
int Rstep;
SMC_ini();
err = USB_Initialize(); //初始化USB控制器
if (err != 0)
{
while(1); //初始化失败,程序停止执行
}
Init_USBInterrupt(); //配置USB中断向量
UART1_ini();
IRQEnable();
//EINT1_ini();
M2Position_ini(); //上下电机初始化
M3Position_ini(); //左右电机初始化
M4Position_ini(); //盘电机初始化
//Motor(int num,int dir,int step,int speed);
while(1)
{
usbserve(); /* 处理USB事件,如USB控制传输,USB总线复位等等 */
if(bEPPflags.bits.configuration == 1)
{
if(bEPPflags.bits.ep1_rxdone == 1)
{ /* 逻辑端点1收到数据 */
DISABLE();
bEPPflags.bits.ep1_rxdone = 0; /* 清除逻辑端点1收到数据标志 */
if(GenEpBuf[0]=='u' & GenEpBuf[1]=='s' & GenEpBuf[2]=='b' & GenEpBuf[3]=='o' & GenEpBuf[4]=='k')
{
USB_WriteEndpoint(3, 10, USBOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='s' & GenEpBuf[1]=='t')
{
SetCLStep = (GenEpBuf[2] - 0x30) * 100 + (GenEpBuf[3] - 0x30) * 10 + (GenEpBuf[4] - 0x30) - 80;
SetSDStep = (GenEpBuf[5] - 0x30) * 100 + (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30) - 40;
SetGFStep = (GenEpBuf[8] - 0x30) * 10 + (GenEpBuf[9] - 0x30);
SetFlag = 1;
USB_WriteEndpoint(3, 10, SetOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='d' & GenEpBuf[1]=='i' & GenEpBuf[2]=='s' & GenEpBuf[3]=='k')
{
if(GenEpBuf[4]=='#')
{
CDiskStep = 0;
}
else if(GenEpBuf[5]=='#')
{
CDiskStep = GenEpBuf[4] - 0x30;
}
else if(GenEpBuf[6]=='#')
{
CDiskStep = (GenEpBuf[4] - 0x30) * 10 + (GenEpBuf[5] - 0x30);
}
else if(GenEpBuf[7]=='#')
{
CDiskStep = (GenEpBuf[4] - 0x30) * 100 + (GenEpBuf[5] - 0x30) * 10 + (GenEpBuf[6] - 0x30);
}
USB_WriteEndpoint(3, 10, ReceiveOK);
M4Position_ini(); //盘电机初始化
USB_WriteEndpoint(3, 10, DiskOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='f' & GenEpBuf[1]=='i' & GenEpBuf[2]=='r' & GenEpBuf[3]=='s' & GenEpBuf[4]=='t' & GenEpBuf[9]=='#')
{
if(GenEpBuf[5]=='d')
{
DiskNum01 = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30); //默认是360
DiskNum21 = DiskNum01 + 100; //默认是460
DiskNum41 = DiskNum01 + 230; //默认是590
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[5]=='c')
{
CleanHole = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30); //默认是100
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='e' & GenEpBuf[3]=='a' & GenEpBuf[4]=='n' & GenEpBuf[6]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
OlnyCleanNum = GenEpBuf[5] - 0x30;
Clean(); //清洗
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='s' & GenEpBuf[1]=='p')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
if(GenEpBuf[2]=='f' & GenEpBuf[3]=='l' & GenEpBuf[4]=='a' & GenEpBuf[5]=='g')
{
Add1Number = 0;
Add1Sample = 0;
Add2Number = 0;
Add2Sample = 0;
Add3Number = 0;
Add3Sample = 0;
Add1Flag = 0;
Add2Flag = 0;
Add3Flag = 0;
}
else if(GenEpBuf[6]=='1' & GenEpBuf[7]=='#')
{
Add1Number = ((GenEpBuf[2] - 0x30) * 10 + (GenEpBuf[3] - 0x30));
Add1Sample = ((GenEpBuf[4] - 0x30) * 10 + (GenEpBuf[5] - 0x30));
Add1Flag = 1;
}
else if(GenEpBuf[6]=='2' & GenEpBuf[7]=='#')
{
Add2Number = ((GenEpBuf[2] - 0x30) * 10 + (GenEpBuf[3] - 0x30));
Add2Sample = ((GenEpBuf[4] - 0x30) * 10 + (GenEpBuf[5] - 0x30));
Add2Flag = 1;
}
else if(GenEpBuf[6]=='3' & GenEpBuf[7]=='#')
{
Add3Number = ((GenEpBuf[2] - 0x30) * 10 + (GenEpBuf[3] - 0x30));
Add3Sample = ((GenEpBuf[4] - 0x30) * 10 + (GenEpBuf[5] - 0x30));
Add3Flag = 1;
}
else if(GenEpBuf[2]=='c' & GenEpBuf[3]=='l')
{
CleanNumber = GenEpBuf[4] - 0x30;
CleanFlag = 1;
}
else if(GenEpBuf[9]=='#')
{
PumpIni[5] = GenEpBuf[6];
PumpIni[6] = GenEpBuf[7];
PumpIni[7] = GenEpBuf[8];
GetSample(((GenEpBuf[2] - 0x30) * 10 + (GenEpBuf[3] - 0x30)),((GenEpBuf[4] - 0x30) * 10 + (GenEpBuf[5] - 0x30)),Add1Number,Add1Sample,Add2Number,Add2Sample,Add3Number,Add3Sample); //进样
}
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
GF(); //对准石墨管
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='+' & GenEpBuf[3]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,1,1,4); //往下
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='-' & GenEpBuf[3]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,0,1,4); //往上
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='i' & GenEpBuf[3]=='n' & GenEpBuf[4]=='#')
{
GFinStep = 0;
USB_WriteEndpoint(3, 10, ReceiveOK);
GFinFlag = 1;
GFin(); //调进入深度
//USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='t' & GenEpBuf[3]=='e' & GenEpBuf[4]=='s' & GenEpBuf[5]=='t')
{
if(GenEpBuf[6]=='#')
{
GFRStep = 0;
}
else if(GenEpBuf[7]=='#')
{
GFRStep = GenEpBuf[6] - 0x30;
}
else if(GenEpBuf[8]=='#')
{
GFRStep = (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30);
}
else if(GenEpBuf[9]=='#')
{
GFRStep = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30);
}
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,0,GFRStep+30,4); //先往上多走30步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,GFRStep,4); //调试
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='o' & GenEpBuf[3]=='k' & GenEpBuf[4]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
M2Position_ini(); //上下电机初始化
M3Position_ini(); //左右电机初始化
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); //发送10个字节到PC
}
else if(GenEpBuf[0]=='g' & GenEpBuf[1]=='f' & GenEpBuf[2]=='o' & GenEpBuf[3]=='n' & GenEpBuf[4]=='l' & GenEpBuf[5]=='y')
{
if(GenEpBuf[6]=='#')
{
GFRStep = 0;
}
else if(GenEpBuf[7]=='#')
{
GFRStep = GenEpBuf[6] - 0x30;
}
else if(GenEpBuf[8]=='#')
{
GFRStep = (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30);
}
else if(GenEpBuf[9]=='#')
{
GFRStep = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30);
}
USB_WriteEndpoint(3, 10, ReceiveOK);
GF(); //对准石墨管
Motor(2,1,GFRStep,4); //调试
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
CL(); //对准清洗槽
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='+' & GenEpBuf[3]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,1,1,4); //往下
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='-' & GenEpBuf[3]=='#')
{
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,0,1,4); //往上
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='i' & GenEpBuf[3]=='n' & GenEpBuf[4]=='#')
{
CLinStep = 0;
USB_WriteEndpoint(3, 10, ReceiveOK);
CLinFlag = 1;
CLin(); //调进入深度
//USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='t' & GenEpBuf[3]=='e' & GenEpBuf[4]=='s' & GenEpBuf[5]=='t')
{
if(GenEpBuf[6]=='#')
{
CLRStep = 0;
}
else if(GenEpBuf[7]=='#')
{
CLRStep = GenEpBuf[6] - 0x30;
}
else if(GenEpBuf[8]=='#')
{
CLRStep = (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30);
}
else if(GenEpBuf[9]=='#')
{
CLRStep = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30);
}
USB_WriteEndpoint(3, 10, ReceiveOK);
Motor(2,0,CLRStep+30,4); //先往上多走30步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,CLRStep,4); //调试
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='o' & Gen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -