📄 dabiaoview.cpp
字号:
if(pSelEntity->m_datatype==2)
{
buffer.Format("%04d/%02d/%02d",
CTime::GetCurrentTime().GetYear(),
CTime::GetCurrentTime().GetMonth(),
CTime::GetCurrentTime().GetDay());
goto out;
}
}
if(pSelEntity->m_type==MTEXT)
{
buffer=pSelEntity->m_text;
}
if(pSelEntity->m_type==MNO)
{
CFile file;
CFileStatus Status;
int no;
char startno[6];
no = atoi(pSelEntity->m_text);
no++;
itoa(no,startno,10);
if(!file.GetStatus(_T("backup.txt"),Status))
{
file.Open(_T("backup.txt"),CFile::modeCreate|CFile::modeReadWrite);
file.Close();
return;
}
file.Open(_T("backup.txt"),CFile::modeReadWrite);
file.Write(startno,6);
file.Close();
buffer=startno;
goto out;
}
out:
pSelEntity->m_text=buffer;
pSelEntity->Draw(pDC,0);
g_pDoc->m_EntityList.AddTail(pSelEntity);
pSelEntity = NULL;
pos1= g_pDoc->m_EntityList.Find(pSel) ;
g_pDoc->m_EntityList.RemoveAt(pos1) ;
delete pSelEntity ;
pSelEntity = NULL ;
}
g_pDoc->UpdateAllViews(NULL) ;
g_pDoc->SetModifiedFlag(TRUE);
}
UINT OrderThread(LPVOID pParam)
{
LPBYTE Order,porder,sumcheck;
ULONG bytesnum;
while (g_start==TRUE)
{
switch (orderflag)
{
case 'T':
{
CDC memdc;
CClientDC dc((CWnd*)point);
CRect clientRect;
CBitmap bitmap;
memdc.CreateCompatibleDC (&dc);
SetSystemPaletteUse(memdc.GetSafeHdc (),SYSPAL_NOSTATIC);
bitmap.CreateCompatibleBitmap (&dc,width,height);
CBitmap * poldbitmap=memdc.SelectObject (&bitmap);
memdc.StretchBlt(0,0,width,height,&dc,sviewx,sviewy,width,height,SRCCOPY);
HANDLE hDIB = DDBToDIB(bitmap, 0, NULL);
LPVOID lpDib=::GlobalLock(hDIB);
if (lpDib==NULL)
return 0;
dibit.AttachMemory (lpDib,TRUE,hDIB);
DWORD sizeimage,bitcount,dwsizeimage,rwidth;
width=dibit.m_lpBMIH ->biWidth ;
height=dibit.m_lpBMIH ->biHeight ;
rwidth=WIDTHBYTES(width);
dibit.m_lpImage = Converbit(&dibit);
sizeimage=height*rwidth;
dibit.m_lpBMIH ->biSizeImage =sizeimage;
dibit.m_lpBMIH ->biBitCount =1;
//chen RecorderData2(&dibit);
bitmap.Detach ();
xoff=0;
yoff=0;
xd=0;
yd=0;
LPBYTE endlpimage;
LPBYTE pdata,pgo;
LPBITMAPINFOHEADER lpbmih;
UINT lines=0; //
dwsizeimage=dibit.m_lpBMIH ->biSizeImage ;
lpimage=(BYTE*)new UCHAR[dwsizeimage];
memcpy(lpimage,dibit.m_lpImage,dwsizeimage);
lpbmih=dibit.m_lpBMIH;
bitcount=lpbmih->biBitCount;
height=lpbmih->biHeight;
width=lpbmih->biWidth;
rwidth=(dwsizeimage/bitcount)/height;
lpimage=Conver(lpimage,dwsizeimage,width,rwidth);
//chen typedata(lpimage,height,rwidth);
endlpimage=lpimage;
(BYTE*)endlpimage+=dwsizeimage;
COMMTIMEOUTS to;
if (!(comprop.dwProvCapabilities & PCF_TOTALTIMEOUTS))
AfxMessageBox("Can't set timeouts!");
memset(&to,0,sizeof(to));
to.ReadTotalTimeoutConstant =100;
to.WriteTotalTimeoutConstant =500;
to.ReadIntervalTimeout =20;
SetCommTimeouts(CommFile,&to);
BYTE inbuff[2];
DWORD byteswrite,bytesread;
UINT linesnum=0;
UINT readnum;
while (linesnum<height)
{
lines=Search(lpimage,width,rwidth,height);
linesnum+=lines;
(BYTE*)lpimage+=lines*rwidth;
yoff+=lines;
if(linesnum>=(height-1)) //如果图形下半部分没有要打的,
break; //直接结束
if (lines!=0)
{
char gotag='M';
pgo=Go(xd,xoff,lines,yd);
for( readnum=0; readnum < 8; readnum++)
{
PurgeComm(CommFile,PURGE_RXCLEAR);
if(!WriteFile(CommFile,pgo,8,&byteswrite,NULL))
{
AfxMessageBox("数据无法写出!");
goto end;
}
if(!ReadFile(CommFile,inbuff,2,&bytesread,NULL))
{
AfxMessageBox("数据无法读入!");
goto end;
}
else
{
if (bytesread)
{
if(IsOk(gotag,inbuff))
{
//chen writetag(inbuff);
break;
}
}
}
if (::WaitForSingleObject(g_eventKill, 0) == WAIT_OBJECT_0)
{
g_send=FALSE;
goto end;
}
}
if (readnum==8)
{
AfxMessageBox("数据写出超时,不能完成!");
goto end;
}
//打标机空走,并接受应答
}
if(linesnum>=(height-1)) //如果图形下半部分没有要打的,
break; //直接结束
pdata=Packet(lpimage, xoff, xd, width, rwidth,bytesnum);
for( readnum=0; readnum < 8; readnum++)
{
PurgeComm(CommFile,PURGE_RXCLEAR);
if(!WriteFile(CommFile,pdata,Dist+5,&byteswrite,NULL))
{
AfxMessageBox("数据无法写出!");
goto end;
}
char packetag='T';
if(!ReadFile(CommFile,inbuff,2,&bytesread,NULL))
{
AfxMessageBox("数据无法读入!");
goto end;
}
else
{
if (bytesread)
{
if(IsOk(packetag,inbuff))
{
//chen writetag(inbuff);
break;
}
}
}
}
if (::WaitForSingleObject(g_eventKill, 0) == WAIT_OBJECT_0)
{
g_send=FALSE;
goto end;
}
if(orderflag=='P')
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='P';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
// AfxMessageBox("PAUSE!");
while(orderflag=='P')
{
Sleep(10);
}
if(orderflag=='F')
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='F';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
}
if (orderflag=='J')
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='J';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
// AfxMessageBox("continue");
orderflag='T';
}
else
{
if (orderflag='C')
goto end;
}
}
if (readnum==8)
{
AfxMessageBox("数据写出超时,不能完成!");
goto end;
}
linesnum++;
lpimage+=rwidth;
yoff++;
if (xd==0)
{
xd=1;
}
else
{
xd=0;
}
}
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='T';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
PurgeComm(CommFile,PURGE_RXCLEAR);
if(!WriteFile(CommFile,Order,bytesnum,&byteswrite,NULL))
{
AfxMessageBox("不能发结束标志!");
goto end;
}
if (byteswrite==0)
{
AfxMessageBox("没有成功发送结束标志!");
goto end;
}
end:
//////////////////
if(orderflag=='F')
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='F';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
}
///////////////
orderflag='W';
g_eventKill.ResetEvent();
::GlobalUnlock(lpDib);//GlobalUnlock(lpDib);
break;
}
case 'F':
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='F';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'C':
{
porder=(BYTE*) new char[9];
Order=porder;
*(BYTE*)porder++='C';
*(BYTE*)porder++=5;
*(BYTE*)porder++=bits;
*(BYTE*)porder++=xtd;
*(BYTE*)porder++=xtoff;
*(BYTE*)porder++=ytd;
*(BYTE*)porder++=ytoff;
sumcheck=Sumcheck(Order,7);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=9;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'S':
{
porder=(BYTE*) new char[6];
Order=porder;
*(BYTE*)porder++='S';
*(BYTE*)porder++=2;
*(BYTE*)porder++=Dist;
*(BYTE*)porder++=speed;
sumcheck=Sumcheck(Order,4);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=6;
Write(Order,bytesnum);
orderflag='W';
//-------------
brush=TRUE;
viewwidth=viewscale*Dist*hdnum;
viewhigh=viewscale*height;
//-------------
break;
}
case 'J':
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='J';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'L':
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='L';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'P':
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='P';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'A':
{
porder=(BYTE*) new char[4];
Order=porder;
*(BYTE*)porder++='A';
*(BYTE*)porder++=0;
sumcheck=Sumcheck(Order,2);
(BYTE*)sumcheck++;
*(BYTE*)porder++=*(BYTE*)sumcheck--;
*(BYTE*)porder=*(BYTE*)sumcheck;
bytesnum=4;
Write(Order,bytesnum);
orderflag='W';
break;
}
case 'W':
{
BYTE inbuff;
ULONG bytesread=0;
COMMTIMEOUTS to3;
if (!(comprop.dwProvCapabilities & PCF_TOTALTIMEOUTS))
AfxMessageBox("Can't set timeouts!");
memset(&to3,0,sizeof(to3));
to3.ReadTotalTimeoutConstant =30;
to3.ReadIntervalTimeout =20;
SetCommTimeouts(CommFile,&to3);
while(orderflag=='W')
{
if (orderflag!='W')
AfxMessageBox(" not w");
if(!ReadFile(CommFile,&inbuff,1,&bytesread,NULL))
{
AfxMessageBox("Error Read!");
}
if (bytesread)
{
if (inbuff==0x01)
{
//-----------------------调整打印内容
{
CText* pSelEntity = NULL ;
CText* pSel =NULL;
POSITION pos1 = NULL ;
CDC* pDC = g_pView->GetDC();
int count=g_pDoc->m_EntityList.GetCount();
POSITION pos = g_pDoc->m_EntityList.GetHeadPosition();
for(int i=0;i<count;i++)
{
pSelEntity = pSel = (CText*)g_pDoc->m_EntityList.GetNext(pos);
CString buffer;
if(pSelEntity->m_type==MTIME)
{
buffer.Format("%02d:%02d",
CTime::GetCurrentTime().GetHour(),
CTime::GetCurrentTime().GetMinute());
}
if(pSelEntity->m_type==MDATA)
{
if(pSelEntity->m_datatype==0)
{
buffer.Format("%04d_%02d_%02d",
CTime::GetCurrentTime().GetYear(),
CTime::GetCurrentTime().GetMonth(),
CTime::GetCurrentTime().GetDay());
}
if(pSelEntity->m_datatype==1)
{
buffer.Format("%04d.%02d.%02d",
CTime::GetCurrentTime().GetYear(),
CTime::GetCurrentTime().GetMonth(),
CTime::GetCurrentTime().GetDay());
}
if(pSelEntity->m_datatype==2)
{
buffer.Format("%04d/%02d/%02d",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -