📄 realdll.cpp
字号:
#include <stdio.h>
#include <windows.h>
#include "math.h"
#include "okapi32.h"
#include "tj_robotcontrol_tjugr_Server.h"
#define L 10
#define pi 3.1415926
#define proportion1 0.0077
#define proportion2 0.0071
#define P 0.0000009042
JNIEXPORT jlong JNICALL Java_tj_robotcontrol_tjugr_Server_StatusX
(JNIEnv *, jclass){
HANDLE hBoard;
BOOL bActive=0;
RECT rcBUFFER;
FILE *fp1,*fp2;
int i,j,k,m,n,sumx1,sumx2,sumy1,sumy2,m_x,m_y,i_new,p;
int x1[400],yy1[400],x2[400],y2[400],datax[2402],datay[2402];
double m_x1,m_x2,m_y1,m_y2,m_angle,temp1,temp2,dy[2402],dx[2402],realx,realy,errorx,errory;
long lIndex=-1;
long z;
unsigned long temp3;
hBoard=okOpenBoard(&lIndex);
okSetCaptureParam(hBoard,CAPTURE_CLIPMODE,2);
okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT,FORM_GRAY8);
rcBUFFER.left=0;rcBUFFER.top=0;
rcBUFFER.right=768;
rcBUFFER.bottom=576;
okSetTargetRect(hBoard,BUFFER,&rcBUFFER);
bActive=TRUE;
int e=0;
okCaptureSingle(hBoard,BUFFER,0);
/* okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);
okCaptureSingle(hBoard,BUFFER,0);*/
//*******************参数初始化********************
k=1;
m=1;
n=0;
sumx1=0;
sumy1=0;
sumx2=0;
sumy2=0;
m_x1=0;
m_y1=0;
for(i=0;i<400;i++)
{
x1[i]=0;yy1[i]=0;
x2[i]=0;y2[i]=0;
}
m_x=0;m_y=0;
okCaptureSingle(hBoard,BUFFER,0);
okStopCapture(hBoard);
// printf("%d\n",e);
//*********************计算坐标***********************
for(i=130;i<=500;i++)
for(j=70;j<=200;j++)
{
z=okReadPixel(hBoard,BUFFER,0,i,j);
if(z<50)
{
if(k==1)
{
x1[0]=i;
yy1[0]=j;
k+=1;
}
else
{
if((abs(x1[0]-i))>L||(abs(yy1[0]-j))>L)
{
x2[n]=i;
y2[n]=j;
n+=1;
}
else
{
x1[m]=i;
yy1[m]=j;
m+=1;
}
}
}
}
for(i=0;i<m;i++)
{
sumx1+=x1[i];
sumy1+=yy1[i];
}
m_x1=(sumx1/m);
m_y1=(sumy1/m);
for(i=0;i<n;i++)
{
sumx2+=x2[i];
sumy2+=y2[i];
}
if(n!=0)
{
m_x2=(sumx2/n);
m_y2=(sumy2/n);
}
if(m<n)
{
temp1=m_x1;
temp2=m_y1;
m_x1=m_x2;
m_y1=m_y2;
m_x2=temp1;
m_y2=temp2;
}
m_x=int((m_x1+m_x2)/2);
m_y=int((m_y1+m_y2)/2);
m_angle=0;
temp3=m_x&(0x0000ffff);
temp3<<=16;
temp3=temp3&(0xffff0000);
temp3+=m_y;
bActive=FALSE;
okCloseBoard(hBoard);
long X=temp3;
return (jlong)temp3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -