请问:
问题1:鼠标点击住图标,可以随意拖动。并且图标下的文字也跟随移动。而且图标下的文字要随时可以更改。
要实现该功能,有什么好的方法。
可以的话,贴代码给我。谢谢!注:移动图标,我可以实现。但是下面的文字要跟随图标一起移动,并且文字要可以更改的话,不知道有什么好的方法。
问题2:串口通信:上位机软件要同时实时监控16台下位机设备。能实时读取数据。出现的问题是:有时候不能实时读取某台设备的数据,因为给每台设备不断发包的时间间隔太长了(每次写数据后:延时60ms,16台设备的话,给一台设备的发包的时间周期约等于1s),导致这个问题。
可我把每次发包后的延时时间改小了,我想压缩这个时间,周期为500ms.就接收不到正常的数据。(每次写数据后:延时60ms,这个时间低于60ms都不能正常接收到数据。)。除了硬件的程序上去改程序外,软件上有方法可以规避该问题吗?
有做过相关485串口开发的朋友,能讲讲相关的方法吗?串口读,写延时相关
问题1:鼠标点击住图标,可以随意拖动。并且图标下的文字也跟随移动。而且图标下的文字要随时可以更改。
要实现该功能,有什么好的方法。
可以的话,贴代码给我。谢谢!注:移动图标,我可以实现。但是下面的文字要跟随图标一起移动,并且文字要可以更改的话,不知道有什么好的方法。
问题2:串口通信:上位机软件要同时实时监控16台下位机设备。能实时读取数据。出现的问题是:有时候不能实时读取某台设备的数据,因为给每台设备不断发包的时间间隔太长了(每次写数据后:延时60ms,16台设备的话,给一台设备的发包的时间周期约等于1s),导致这个问题。
可我把每次发包后的延时时间改小了,我想压缩这个时间,周期为500ms.就接收不到正常的数据。(每次写数据后:延时60ms,这个时间低于60ms都不能正常接收到数据。)。除了硬件的程序上去改程序外,软件上有方法可以规避该问题吗?
有做过相关485串口开发的朋友,能讲讲相关的方法吗?串口读,写延时相关
解决方案 »
- 怎么向列表控件上写东西?(最后80分!)
- 怎么让我的窗口始终在某个窗口的最前面
- MFC的对话框程序里怎么动态创建一个OCX控件呢?
- 单文档传值的问题
- 关于GetLogicalDriveStrings函数的一个问题
- 急救!一整天的工作啊,头文件莫名其妙不见了?
- CDC设备上下文应如何理解?
- 如何在treectrl控件中实现类似vc工作区中的classview功能,当单击某一文件名,能在右边的客户区正确的显示出来文件内容(多文档),在线
- 如何找到做安装程序时所需要的动态连接DLL文件和其他需要的文件!!??
- 请问一个CString类型的字符串如何转化为一个char *s行的呢?
- CLabel类,有些字体设置不成功。
- vc++ 数据导出到EXCEL出错
/////////////////////////////////////////////////////////////////////////////
// CCharFollowViewIMPLEMENT_DYNCREATE(CCharFollowView, CView)BEGIN_MESSAGE_MAP(CCharFollowView, CView)
//{{AFX_MSG_MAP(CCharFollowView)
ON_WM_MOUSEMOVE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CCharFollowView construction/destruction
CString message[10]={"欢","迎","使","用","明","日","科","技","软","件"};
CCharFollowView::CCharFollowView()
{
//message[10]={"欢","迎","使","用","明","日","科","技","软","件"};
for(int i=0;i<10;i++)
{
m_mousepoint[i].x=-50;
m_mousepoint[i].y=-200;
}
}CCharFollowView::~CCharFollowView()
{
}
BOOL CCharFollowView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs return CView::PreCreateWindow(cs);
}/////////////////////////////////////////////////////////////////////////////
// CCharFollowView drawingvoid CCharFollowView::OnDraw(CDC* pDC)
{
CCharFollowDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
for(int i=0;i<10;i++)
{
pDC->TextOut(m_mousepoint[i].x,m_mousepoint[i].y,message[i]);
}
}/////////////////////////////////////////////////////////////////////////////
// CCharFollowView printingBOOL CCharFollowView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}void CCharFollowView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}void CCharFollowView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}/////////////////////////////////////////////////////////////////////////////
// CCharFollowView diagnostics#ifdef _DEBUG
void CCharFollowView::AssertValid() const
{
CView::AssertValid();
}void CCharFollowView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}CCharFollowDoc* CCharFollowView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCharFollowDoc)));
return (CCharFollowDoc*)m_pDocument;
}
#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
// CCharFollowView message handlersvoid CCharFollowView::OnMouseMove(UINT nFlags, CPoint point)
{
m_point=point;
CView::OnMouseMove(nFlags, point);
}void CCharFollowView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(1,30,NULL);
}void CCharFollowView::OnTimer(UINT nIDEvent)
{
for(int i=9;i>=1;i--)
{
m_mousepoint[i].x=m_mousepoint[i-1].x+18;
m_mousepoint[i].y=m_mousepoint[i-1].y;
}
m_mousepoint[0].x=m_point.x+18;
m_mousepoint[0].y=m_point.y;
Invalidate();
CView::OnTimer(nIDEvent);
}