⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 realdll.cpp

📁 实现了java调用c的功能(JNI)
💻 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 + -