A
Can anyone help me with understanding the following peice of vc++ code?
The objective is to create a user interface for a hard ware unit.If by reading this code if anyone can tell me what exactly goes out of the serial port it will be great.
void CStereoDlg::OnDeltaposCoarsePan(NMHDR* pNMHDR, LRESULT* pResult)
{
CString Cli_Rsp,CliCmd;
float nPanSize=1000; // coarse pan = 10 degrees
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
if(!(((CRtsa2App*)AfxGetApp())->nPT_Stat[1][1]))
{
// Calculate angle
pNMUpDown->iPos=((CRtsa2App*)AfxGetApp())->nPT_Stat[1][6]/10;
nPanMoveAngle = pNMUpDown->iPos - pNMUpDown->iDelta*nPanSize;
// Set velocity scale
((CRtsa2App*)AfxGetApp())->nPT_Control->pan_vel_scale(1);
// Move pan axis
((CRtsa2App*)AfxGetApp())->nPT_Control->pan_abs(nPanMoveAngle,((CRtsa2App*)AfxGetApp())->nPT_Stat);
m_PanSpin.SetPos(nPanMoveAngle-pNMUpDown->iDelta);
}
UpdateData(FALSE);
*pResult = 0;
}
void pan_tilt:
an_abs(int angl,long int **status)
{
/* Write data out port */
sprintf(pt_buff,"%ipa%ld\n\r",1,-1*(long int)(angl*10));
pt_port.write_port(pt_buff);
/* Wait for move to start */
/* or timeout before */
/* returing control */
p_s=clock();
do
{
p_e=clock();
p_to=(p_e-p_s)/(float)CLOCKS_PER_SEC;
}while(!status[1][1]&&(p_to<PT_TO));
/* Return control */
return;
}
void serial_port::write_port(char *wp_buff)
{
DWORD written;
/* Write data out port */
if(!WriteFile(comm_h,wp_buff,strlen(wp_buff)*sizeof(char),&written,NULL))
printf("Error writing data to COMM%i port.\n",comm_port);
if(written!=(DWORD)(strlen(wp_buff)*sizeof(char)))
printf("Error writing data to COMM%i.\n",comm_port);
/* Return control */
return;
}
The objective is to create a user interface for a hard ware unit.If by reading this code if anyone can tell me what exactly goes out of the serial port it will be great.
void CStereoDlg::OnDeltaposCoarsePan(NMHDR* pNMHDR, LRESULT* pResult)
{
CString Cli_Rsp,CliCmd;
float nPanSize=1000; // coarse pan = 10 degrees
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
if(!(((CRtsa2App*)AfxGetApp())->nPT_Stat[1][1]))
{
// Calculate angle
pNMUpDown->iPos=((CRtsa2App*)AfxGetApp())->nPT_Stat[1][6]/10;
nPanMoveAngle = pNMUpDown->iPos - pNMUpDown->iDelta*nPanSize;
// Set velocity scale
((CRtsa2App*)AfxGetApp())->nPT_Control->pan_vel_scale(1);
// Move pan axis
((CRtsa2App*)AfxGetApp())->nPT_Control->pan_abs(nPanMoveAngle,((CRtsa2App*)AfxGetApp())->nPT_Stat);
m_PanSpin.SetPos(nPanMoveAngle-pNMUpDown->iDelta);
}
UpdateData(FALSE);
*pResult = 0;
}
void pan_tilt:
{
/* Write data out port */
sprintf(pt_buff,"%ipa%ld\n\r",1,-1*(long int)(angl*10));
pt_port.write_port(pt_buff);
/* Wait for move to start */
/* or timeout before */
/* returing control */
p_s=clock();
do
{
p_e=clock();
p_to=(p_e-p_s)/(float)CLOCKS_PER_SEC;
}while(!status[1][1]&&(p_to<PT_TO));
/* Return control */
return;
}
void serial_port::write_port(char *wp_buff)
{
DWORD written;
/* Write data out port */
if(!WriteFile(comm_h,wp_buff,strlen(wp_buff)*sizeof(char),&written,NULL))
printf("Error writing data to COMM%i port.\n",comm_port);
if(written!=(DWORD)(strlen(wp_buff)*sizeof(char)))
printf("Error writing data to COMM%i.\n",comm_port);
/* Return control */
return;
}