暑假的前期觉得毕业前玩了一段时间,所以该认真学习一段时间。刚开始每天做一些学姐布置的小任务,然后开始写那个模拟点钞机的软件,还看了一篇论文,跟着老板学习机器学习的基础知识。还是学习了一段时间,但是感觉力度不够,然后到八月22就回家了。今天才到学校,以前的知识需要巩固,然后还有很多新的东西需要学习,明天报道后需要加油学习啊!
暑假的学习记录:
坚持一个月还是有效果的吧! 7.14 熟悉软件走抄部分代码,主要是消息传递的事件处理,完成界面右键菜单小功能。 7.15 熟悉run_cash_dialog部分的代码及相关的类是实现;完成Dialog的窗口;学习了数字图像处理的频域滤波部分。 7.18 学习ini文件的读写操作,基本实现界面读写ini文件。 7.19 完成任务栏显示效果,学习图像处理噪声模型 7.20 完成记住密码功能,熟悉代码。 7.21 学习图像复原的基础知识。 7.22 完成记住上次选择目录操作,学习rgb相关基础知识。 7.25 复习网络相关知识,完成ping功能,学习PCA,SVD。 7.26 学习奇异值分解SVD. 7.27 熟悉软件代码,学习最小二乘学习法。 7.28 熟悉TcpSocket,学习机器学习的回归部分。 7.29 基本完成监听和tcp连接功能。 8.01 完成部分命令发送功能。 8.02 完成部分初始化界面的指令发送。 8.03 完成到界面升级的指令连接,学习机器学习分类的基础知识。 8.04 学习机器学习分类...效率很低的一天。 8.05 完成界面升级和调试指令 8.08 杭州 8.09 杭州 8.10 上海 8.11 熟悉代码,完善升级界面的指令 8.12 完成部分红外校准界面的指令,阅读GSR论文。 8.15 阅读GSR文章... 8.16 基本完成红外部分的指令,学习GSR文章里面的方法。 -------------------------------------------------生产管理软件---------------------------------------------------------------- bug:任务栏竖放,注册表路径是否存在(如果找不到路径,就设为默认根目录),老化时间默认值 bug:PageUpgrade中几秒钟链接失败;点开始-->发命令失败 8.03bug:服务端主动关闭时,线程关闭失败;客户端主动关闭时,点两次关闭;命令有顺序,客户端未全部关闭,打开服务端接受失败 在 安装目录C:\Program Files (x86)\ZMVision\ccmdbg下FTPCONFIG.ini中找到 C:\Users\ranji\AppData\Local\ZMVision\ccmdbg\config路径mode.ini配置文件 1.page中的GotoStep(),调用MianDialog的GotoStep() 2.WorkingParameters::GetInstance();DeviceProxy::GetInstance();DebugLogger::GetInstance(); LocalFileSaver::GetInstance() 3.DeviceProxy::GetInstance()->AddObserver() SUBJECT_CONNECTED,SUBJECT_DISCONNECTED monitor_->AddObserver() SUBJECT_CASH_INFO, SUBJECT_BEGIN_BUNDLE, SUBJECT_ADC_READY, SUBJECT_IMAGE_READY, SUBJECT_END_BUNDLE, 观察者 Observer; 两个具体的观察者 HWNDObserver,MethodObserver 被观察者Observable;两个具体的被观察者: DeviceProxy, RunCashMonitor //两种方式,分别是控制通道和数据通道 观察者: NotifyUpdate() 当设备连接状态变化时,外部接收数据时,通知观察者,观察者有自己的OnUpdate()方式 AddObserver()两种方式添加观察者(一种观察窗口连接状态,一种通过“方法”观察外界数据) 4.控制通道,软件作为客户端,请求链接,然后发指令 PageConnect::OnEnter()开启线程 --->PageConnect::TryConnect --->DeviceProxy::Connect(deviceIP, devicePort) --->TcpSocket::Connect(address, port)请求链接 数据通道,软件作为服务端,监听走抄的情况,接收各种数据创建 RunCashMonitor单例时 instance_->Start();--->StartRunCashDetect() (1)--->OpenDataConnection(发送一个指令,告诉点钞机进入数据发送模式) --->DataConnection::Open(LPCTSTR address, int port) --->listenSocket_.Listen(address, port)监听链接 ---->connection->WaitConnect() ----> listenSocket_.Accept (2)--->线程Run()里面ReadPacke --->然后利用读取的参数去设置其他参数,通知其他观察者( OnCISData(&packet); OnADCData(&packet); OnBeginBundle();OnEndBundle();...) ---> NotifyUpdate(SUBJECT_CASH_INFO) ---> 界面观察者&PageMagneticDetect::OnCashInfo --->接收数据并作界面变换 5.页面跳转关系 前面在Application.cpp中初始化: SplashScreen ----->LoginDialog ---->MainDialog (显示IDD_PAGE_CONNECT,接连上网络后) 通过navigationView_选择相应的界面 GotoStep(selected) ----> RunCashDialog dlg; STEP_UPGRADE IDD_PAGE_UPGRADE STEP_IR_CALIBRATION IDD_PAGE_IR_CALIBRATION STEP_MH_DETECT IDD_PAGE_MAGNETIC_DETECT STEP_CIS_CALIBRATION IDD_PAGE_CIS_CALIBRATION STEP_FINISH IDD_PAGE_FINISH STEP_RUN_CASH_TEST IDD_PAGE_RUN_CASH_TEST 6.走抄模式 走钞的流程是:3走钞开始信号(初始化保存数据路径)--->0主控数据(ADC)(钞票索引就是钞票的id,)--->2图像数据(CIS)---->3钞票信息(info)---->4提钞信号么(保存前面设置的这些数据) 钞票信息解析:20160803_143828_001_Err000_LastErr0x0_Den1_Dir0_Ver99_SNX02P133112_adc 走抄的日期_开始走抄的时间_当前数据的序号_钞票的错误代码_当前没有此数据(填0)_面额(1,50,100)_方向_版本号_冠字号(没有填0)_数据名称 通道选择: struct ADCChannel { TCHAR name[64]; int minValue, maxValue; int id; }; struct ADCChannel { short count; //波形的长度 short *codes; //黄线,码盘值 short *values; //绿线,电压值 }; 7.上位机接收数据的格式文档 -------------------------------------------生产管理软件----------------------------------------------------------------------------------
希望以后自己能提高自己的学习效率,提升自己的编程能力!
时间: 2024-11-05 21:53:25