vts编译
‘壹’ 急!龚建伟关于串口通信的程序有问题的,期望高手解决!
粗略的看了一下,你的代码没有问题,我怀疑是其他的地方出现了问题。
给你一个我以前写的,模仿串口调试助手用串口控件的方法写的程序,你参考一下吧。
代码已发到你的邮箱。
补充:
接收就是在OnComm() 函数里啊,你的这段代码没有什么问题。
有没有做串口控件的事件映射啊:
BEGIN_EVENTSINK_MAP(CCuteComDlg, CDialog)
ON_EVENT(CCuteComDlg, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)
END_EVENTSINK_MAP()
如果有的话,那接收应该没有问题的。况且即使只有发没有收,那也不会点发送就会出错的。
我发给你的代码你看到了吗,那是标准串口控件的用法,里面收发演示都有的,你详细看一下吧,应该是对你有所帮助的。
有人说是因为龚建伟的串口初始化部分代码有问题,才导致了后面的安全数组出现错误。
我一直是使用如下代码进行串口控件的初始化的,已经应用到过很多程序中没有出现过问题,你可以试试:
if(m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(FALSE);
m_ctrlComm.put_CommPort(1); //选择com1
//输出方式为二进制方式
m_ctrlComm.put_InputMode(1);//text,binary
//m_ctrlComm.put_InBufferSize(64);
//m_ctrlComm.put_OutBufferSize(512);
m_ctrlComm.put_Settings("9600,n,8,1"); //波特率9600,无校验ndo,8个数据位,1个停止位
if( !m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(TRUE);//打开串口
m_ctrlComm.put_RThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.put_InputLen(0); //设置当前接收区数据长度为0
//0---读接收缓冲区的所有内容
//n---读接收缓冲区的 n 个字符(或二进制码)
m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据
这是VS2008中的代码,在VC6.0中请把函数前缀get_替换为Get、put_替换为Set
‘贰’ 将原安卓apk反编译后签名,有原签名文件
一、可以使用如APKTool之类的反编译工具,使用方法网上有介绍,反编译完成后修改所有引用包名的地方及对应的文件夹,然后重新编译为新的APK,最后再用签名工具签名就行。
二、第一步是用命令行的形式进行的,如果不愿意进行繁琐的配置过程,可以使用一些可视化的APK修改工作,如APK改之理、VTS(Virtuous
Ten
Stdio)等,但主要修改的地方更第一步是一致的。
‘叁’ 如何把vtstool编译到vasp
优化参数要看编译器。
‘肆’ c++调用摄像头的sdk的一些问题 调用activex插件
这个很好解释,看看MSDN函数原型
InvokeHelper第5个参数pbParamInfo
Pointer to a null -terminated string of bytes specifying the types of the parameters following pbParamInfo. For possible values, see the Remarks section for COleDispatchDriver::InvokeHelper.
所以你上面的parms就是对参数类型的说明了。说明了theFile, theFlags, theMediaTypes的类型。刚好是3个。
‘伍’ 如何动态加载ActiveX控件
使用ON_EVENT_RANGE就足以满足需要了,不过,还是希望能够更灵活的实现动态的响应,所以又经过对MFC源码一番探查,发现还是可以的,而且应该也不是很复杂的,下面分别来说说这两种方法
例程为Tdax,对话框程序,使用了Microsoft UpDown Control 6.0控件作为控件,添加了MouseDown事件
第一种方法挺简单的:
1.
缺省的映射定义为
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
ON_EVENT(CTdaxDlg, IDC_UPDOWN1, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
现改为
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
//}}AFX_EVENTSINK_MAP
ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
就是说,可以映射至少11个控件(请注意,这里用了至少,也就是说可以少于11个,甚至于1个也无所谓)
a.这里建议把ON_EVENT_RANGE从
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//}}AFX_EVENTSINK_MAP
对中拖出来,见上面例子,不拖出来不会对程序产生影响,但可能会影响后续的IDE操作,试试便知。
b.最后的参数类型中要在前面加上VTS_I4,即从VTS_I2 VTS_I2 VTS_I4 VTS_I4变为VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4,当然事件处理函数也将做相应调整,下面马上讲到。
2.
修改框架建立的事件处理函数
void OnMouseDownUpdown1(short Button, short Shift, long x, long y);
改为
BOOL OnMouseDownUpdown1(UINT nID, short Button, short Shift, long x, long y);
返回类型为void,应该也无所谓的,不过msdn上说是BOOL,咱就BOOL吧,但UINT nID这个参数是一定要加上的
3.做一些于本案无关的工作
a.在对话框编辑器中删掉原来的ID为IDC_UPDOWN1的控件
b.加一个成员变量CObList m_oaUpdowns;
c.在OnInitDialog中,加上
UINT nID = IDC_UPDOWN1;
CRect rect(10, 10, 20, 30);
for(int i=0; i<11; i++){
CUpDown* pupdown = new CUpDown;
rect.OffsetRect(0, 20);
pupdown->Create(NULL, WS_CHILD | WS_VISIBLE, rect, this, nID + i);
m_oaUpdowns.Add(pupdown);
}
d.在OnDestroy中,加上
for(int i=0; i<m_oaUpdowns.GetSize(); i++){
delete m_oaUpdowns[i];
}
e.在OnMouseDownUpdown1中,加上
CString str;
str.Format("%d", nID);
MessageBox(str);
用来指示是否收到事件
4.编译一下,可以发现,绝对OK
下面,我们来看更多灵活的方法:
观察MFC宏
BEGIN_EVENTSINK_MAP,END_EVENTSINK_MAP和ON_EVENT,可以发现MFC将控件ID,事件ID和事件处理函数等等信息都放在AFX_EVENTSINKMAP_ENTRY这个结构,每个映射一个这种结构,所有的结构组成一数组放在AFX_EVENTSINKMAP结构中,本来以为动态修改这两个结构信息,不就可以实现动态映射控件事件了,可惜发现MFC定义了
const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] =
{
...
}
可恶的const,只好另想它途了。
继续观察MFC源码,发现它中间会有一个
BOOL CCmdTarget::OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
AFX_CMDHANDLERINFO* pHandlerInfo)
{
...
}
函数中有如下代码
VARIANT var;
AfxVariantInit(&var);
DISPPARAMS dispparams;
dispparams.rgvarg = NULL;
if (bRange)
{
memcpy(&dispparams, pEvent->m_pDispParams, sizeof(DISPPARAMS));
dispparams.rgvarg = new VARIANT[++dispparams.cArgs];
memcpy(dispparams.rgvarg, pEvent->m_pDispParams->rgvarg,
sizeof(VARIANT) * (dispparams.cArgs-1));
VARIANT* pvarID成都高级办公软件培训班学习http://www.yingtaow.com?&dispparams.rgvarg[dispparams.cArgs-1];
V_VT(pvarID) = VT_I4;
V_I4(pvarID) = idCtrl;
}
hResult = CallMemberFunc(&pEntry->dispEntry, DISPATCH_METHOD, &var,
(bRange ? &dispparams : pEvent->m_pDispParams), &uArgError);
ASSERT(FAILED(hResult) || (V_VT(&var) == VT_BOOL));
bHandled = V_BOOL(&var);
if (bRange)
delete [] dispparams.rgvarg;
break;
好了,切入口找到了,就用这个CallMemberFunc了,唯一的问题就是重新组织这个函数所需的参数了。
开始:
1.为避免干扰,干脆注释掉OnInitDialog上一例中添加的代码,再加入如下代码:
UINT nID = 10004;
CRect rect(10, 10, 20, 30);
for(int i=0; i<11; i++){
CUpDown* pupdown = new CUpDown;
rect.OffsetRect(0, 20);
pupdown->Create(NULL, WS_CHILD | WS_VISIBLE, rect, this, nID + i);
m_oaUpdowns.Add(pupdown);
}
其实就改了一个nID,之所以改nID,是为了表示这个ID是可以你自己动态确定的,当然这里省事,将这些ID连在了一起,其实分开也是没问题的。
2.注释掉事件映射
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
//}}AFX_EVENTSINK_MAP
// ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
3.重载对话框的OnCmdMsg,加入代码如下:
if(nCode == CN_EVENT && nID >= 10004 && nID <= 10014){
AFX_EVENT* pEvent = (AFX_EVENT*)pExtra;
if(pEvent != NULL && pEvent->m_dispid == -605){//根据dispid来判断是否正确的事件
AFX_DISPMAP_ENTRY e;
e.lpszName = _T("");
e.lDispID = -605; //dispID,事件的dispID
e.vt = VT_BOOL; //返回类型
e.pfn = (AFX_PMSG)OnMouseDownUpdown1;//事件处理函数
e.pfnSet = (AFX_PMSG)0;
e.nPropOffset = 0;
e.flags = afxDispCustom;
//下面是参数类型,如果事件处理函数不加控件ID的话,应该改为VTS_I2 VTS_I2 VTS_I4 VTS_I4
e.lpszParams = VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4;
UINT uArgError = (UINT)-1; // no error yet
VARIANT var;
AfxVariantInit(&var);
//如果需要每个控件的ID信息,应该为框架生成的事件处理函数的参数最前面加上1个UINT nID参数,代码如下:
DISPPARAMS dispparams;
dispparams.rgvarg = NULL;
memcpy(&dispparams, pEvent->m_pDispParams, sizeof(DISPPARAMS));
dispparams.rgvarg = new VARIANT[++dispparams.cArgs];
memcpy(dispparams.rgvarg, pEvent->m_pDispParams->rgvarg,
sizeof(VARIANT) * (dispparams.cArgs-1));
VARIANT* pvarID = &dispparams.rgvarg[dispparams.cArgs-1];
pvarID->vt = VT_I4;
pvarID->intVal = nID;
CallMemberFunc(&e, DISPATCH_METHOD, &var,
&dispparams, &uArgError);
delete []dispparams.rgvarg;
//如果不需要控件的ID信息,代码如下,不过函数就不用加上第1个参数(控件ID)了:
/* CallMemberFunc(&e, DISPATCH_METHOD, &var,
(pEvent->m_pDispParams), &uArgError);*/
}
return TRUE;
}
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
4.编译运行,OK了。
例程为Tdax,对话框程序,使用了Microsoft UpDown Control 6.0控件作为控件,添加了MouseDown事件
第一种方法挺简单的:
1.
缺省的映射定义为
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
ON_EVENT(CTdaxDlg, IDC_UPDOWN1, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
现改为
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
//}}AFX_EVENTSINK_MAP
ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
就是说,可以映射至少11个控件(请注意,这里用了至少,也就是说可以少于11个,甚至于1个也无所谓)
a.这里建议把ON_EVENT_RANGE从
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//}}AFX_EVENTSINK_MAP
对中拖出来,见上面例子,不拖出来不会对程序产生影响,但可能会影响后续的IDE操作,试试便知。
b.最后的参数类型中要在前面加上VTS_I4,即从VTS_I2 VTS_I2 VTS_I4 VTS_I4变为VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4,当然事件处理函数也将做相应调整,下面马上讲到。
2.
修改框架建立的事件处理函数
void OnMouseDownUpdown1(short Button, short Shift, long x, long y);
改为
BOOL OnMouseDownUpdown1(UINT nID, short Button, short Shift, long x, long y);
返回类型为void,应该也无所谓的,不过msdn上说是BOOL,咱就BOOL吧,但UINT nID这个参数是一定要加上的
3.做一些于本案无关的工作
a.在对话框编辑器中删掉原来的ID为IDC_UPDOWN1的控件
b.加一个成员变量CObList m_oaUpdowns;
c.在OnInitDialog中,加上
UINT nID = IDC_UPDOWN1;
CRect rect(10, 10, 20, 30);
for(int i=0; i<11; i++){
CUpDown* pupdown = new CUpDown;
rect.OffsetRect(0, 20);
pupdown->Create(NULL, WS_CHILD | WS_VISIBLE, rect, this, nID + i);
m_oaUpdowns.Add(pupdown);
}
d.在OnDestroy中,加上
for(int i=0; i<m_oaUpdowns.GetSize(); i++){
delete m_oaUpdowns[i];
}
e.在OnMouseDownUpdown1中,加上
CString str;
str.Format("%d", nID);
MessageBox(str);
用来指示是否收到事件
4.编译一下,可以发现,绝对OK
下面,我们来看更多灵活的方法:
观察MFC宏
BEGIN_EVENTSINK_MAP,END_EVENTSINK_MAP和ON_EVENT,可以发现MFC将控件ID,事件ID和事件处理函数等等信息都放在AFX_EVENTSINKMAP_ENTRY这个结构,每个映射一个这种结构,所有的结构组成一数组放在AFX_EVENTSINKMAP结构中,本来以为动态修改这两个结构信息,不就可以实现动态映射控件事件了,可惜发现MFC定义了
const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] =
{
...
}
可恶的const,只好另想它途了。
继续观察MFC源码,发现它中间会有一个
BOOL CCmdTarget::OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
AFX_CMDHANDLERINFO* pHandlerInfo)
{
...
}
函数中有如下代码
VARIANT var;
AfxVariantInit(&var);
DISPPARAMS dispparams;
dispparams.rgvarg = NULL;
if (bRange)
{
memcpy(&dispparams, pEvent->m_pDispParams, sizeof(DISPPARAMS));
dispparams.rgvarg = new VARIANT[++dispparams.cArgs];
memcpy(dispparams.rgvarg, pEvent->m_pDispParams->rgvarg,
sizeof(VARIANT) * (dispparams.cArgs-1));
VARIANT* pvarID = &dispparams.rgvarg[dispparams.cArgs-1];
V_VT(pvarID) = VT_I4;
V_I4(pvarID) = idCtrl;
}
hResult = CallMemberFunc(&pEntry->dispEntry, DISPATCH_METHOD, &var,
(bRange ? &dispparams : pEvent->m_pDispParams), &uArgError);
ASSERT(FAILED(hResult) || (V_VT(&var) == VT_BOOL));
bHandled = V_BOOL(&var);
if (bRange)
delete [] dispparams.rgvarg;
break;
好了,切入口找到了,就用这个CallMemberFunc了,唯一的问题就是重新组织这个函数所需的参数了。
开始:
1.为避免干扰,干脆注释掉OnInitDialog上一例中添加的代码,再加入如下代码:
UINT nID = 10004;
CRect rect(10, 10, 20, 30);
for(int i=0; i<11; i++){
CUpDown* pupdown = new CUpDown;
rect.OffsetRect(0, 20);
pupdown->Create(NULL, WS_CHILD | WS_VISIBLE, rect, this, nID + i);
m_oaUpdowns.Add(pupdown);
}
其实就改了一个nID,之所以改nID,是为了表示这个ID是可以你自己动态确定的,当然这里省事,将这些ID连在了一起,其实分开也是没问题的。
2.注释掉事件映射
BEGIN_EVENTSINK_MAP(CTdaxDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTdaxDlg)
//}}AFX_EVENTSINK_MAP
// ON_EVENT_RANGE(CTdaxDlg, IDC_UPDOWN1, IDC_UPDOWN1+10, -605 /* MouseDown */, OnMouseDownUpdown1, VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
3.重载对话框的OnCmdMsg,加入代码如下:
if(nCode == CN_EVENT && nID >= 10004 && nID <= 10014){
AFX_EVENT* pEvent = (AFX_EVENT*)pExtra
4.编译运行,OK了。
‘陆’ 大连海事大学信息科学技术学院的专业介绍
信息科学技术学院下设电子信息工程、通信工程、自动化、计算机科学与技术、电子信息科学与技术、软件工程、测控技术与仪器、网络工程、智能科学与技术、光电信息工程、传感网技术等11个本科专业;拥有通信与信息系统、计算机应用技术、控制理论与控制工 程三个二级学科博士授权点;拥有信息与通信工程、电子科学与技术、计算机科学与技术三个一级学科硕士点,以及通信与信息系统、信号与信息处理、控制理论与控制工程、检测技术与自动化装置、模式识别与智能系统、计算机系统结构、计算机软件与理论、计算机应用技术等8个二级硕士学位授权点;拥有电子与信息工程领域、计算机技术工程领域、控制工程领域等3个工程硕士学位授权点。
电子信息工程专业
本专业培养具备电子技术和信息系统的基础知识,能从事各类电子设备和电子信息系统(特别是船舶交通管理电子信息系统、无线电导航系统、船舶雷达系统等)的研究、设计、制造、管理、应用和开发的高级工程技术人才。
主要专业基础课和专业课有:电路原理、信号与系统、数字信号处理、电子线路、数字系统与逻辑设计、电磁场理论、电波与天线、微波技术、自动控制系统、通信原理、计算机软件技术基础、微机原理及应用、传感器原理与应用、多媒体技术、无线电导航技术(GPS)、雷达原理与设备(ARPA)、船舶交通管理电子系统(VTS)等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
通信工程专业
本专业培养具备通信技术、通信系统和通信网络等方面的基础知识,能在通信领域(特别是海上移动通信)从事通信系统、设备以及计算机通信网络的研究、设计、制造、管理、应用和开发的高级工程技术人才。主要专业基础课和专业课有:电路原理、信号与系统、数字信号处理、电子线路、数字系统与逻辑设计、通信原理、电磁场理论、微机原理及应用、计算机软件技术基础、卫星通信、通信设备、计算机通信网、移动通信、光纤通信、数字交换原理等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
自动化专业
本专业培养既掌握自动控制理论和自动化技术,又具备电子技术、信息处理技术、计算机应用技术的复合型高级工程技术人才。学生毕业生既能从事控制领域的自动控制系统分析、系统设计、系统研究开发工作,又能在计算机应用、电工电子、信息处理、管理与决策等相关领域从事系统决策、规划、实施、评价和管理工作。
主要专业基础课和专业课有:电路原理、电机学、模拟电子技术、数字电子技术、自动控制理论、系统工程检测技术、过程控制系统、微型计算机原理与应用、工业控制机、计算机网络、计算机编程技术、最优控制、智能控制、鲁棒控制、计算机控制系统、运动控制系统等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
计算机科学与技术专业
本专业培养具有良好的科学素养,系统地、较好地掌握计算机科学与技术,包括计算机硬件、软件与应用的基本理论、基本知识和基本技能与方法。能在科研部门、教育单位、企业、事业、技术和行政管理部门等单位,从事计算机教学、科学研究和应用的计算机科学与技术学科的高级工程技术人才。
主要专业基础课和专业课有:电路基础、模拟电子技术、数字逻辑与数字系统、计算机组成原理、微机原理与汇编语言、计算机网络、计算机系统结构、C++程序设计、离散数学、数据结构、数据库原理、编译原理、操作系统、软件工程、信息系统分析与设计等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
电子信息科学与技术专业
本专业培养具备电子、通信、多媒体、集成电路设计等领域的专业知识并能从事研究、设计、开发、教学等工作的高级专门技术人才。
主要基础课和专业课有:电路原理、电子线路、信号与系统、数字系统与逻辑设计、电磁场理论、微波技术、微机原理及应用、通信原理、工程光学、数字信号处理、语音信号处理、数字图像处理、集成电路设计原理等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
软件工程专业
本专业培养具有良好的综合素质、良好的职业道德、扎实的软件理论与软件工程专业知识、较强的日语与英语综合应用能力,并掌握先进的软件开发技术和软件项目管理方法的高级软件工程专业人才。其基本能力应当达到具有国际水准的软件工程师及软件项目管理人员的水平。为适应区域经济发展和外包软件市场的需求,在英语具有一定的听、说、读、写能力的基础上,本专业还注重日语强化训练,目标是使学生达到国际日语二级以上的水平与能力,具有较强的英、日双语应用能力。
主要专业基础课和专业课有:离散数学、数据结构、计算机组织与结构、计算机网络、C语言程序设计、编译原理、数据库原理、软件工程导论、面向对象方法学、软件设计与体系结构、人机交互的软件工程方法、操作系统、软件质量保证与测试、信息系统分析与设计、软件项目实践、JAVA语言程序设计等。
本专业学制四年,招收无色盲(弱),英语语种的学生,毕业授予工学学士学位。
测控技术与仪器专业
本专业培养既掌握当代检测与控制技术的基本理论,又具备电子技术、信息处理技术、计算机应用技术的复合型高级工程技术人才。本专业毕业生具有自动检测系统、自动控制系统、智能仪器仪表、信息技术以及各种电子产品的研究、设计和开发能力,能在科研部门、高科技企业、教育单位、事业、技术和行政管理部门等单位从事相关领域的科学研究、科技开发、设计制造、应用研究、运营决策和管理等方面的工作。
主要专业基础课和专业课有:电路原理、模拟电子技术基础、数字电子技术基础、自动控制理论、信号分析与处理、微机原理、单片机及接口技术、传感器原理与技术、检测技术、智能仪器仪表、计算机控制技术、测控网络、测控技术与仪器综合设计等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
网络工程专业
本专业培养具有良好的科学素养,基础理论扎实,掌握计算机科学与技术、网络工程、信息学的基本理论和基本知识,具有一定的创新能力,获得工程师专门训练的和良好发展能力的高级专门网络人才,能够在企事业单位或科学研究等部门从事网络工程科研生产、开发和管理与维护工作。
主要专业基础课和专业课有:电路基础、模拟电子技术、数字逻辑与数字系统、计算机组成原理、微机原理与汇编语言、C++程序设计、离散数学、数据结构、软件工程、数据库原理、操作系统、通信网概论、TCP/IP协议原理、计算机网络、网络信息安全、网络系统集成技术、Unix/Linux体系及编程等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
智能科学与技术专业
本专业培养具有坚实的计算机、信息工程、自动控制的基础知识,系统地掌握智能科学与技术的基础理论、基础知识、基本技能与方法,受到良好的科学思维、科学实验和初步科学研究的训练,具备智能信息处理、智能控制、智能系统方面的研究与开发的基本能力。能够自我更新知识和不断创新,适应智能科学与技术的迅速发展。能够在科研、企业、政府机构从事智能科学与技术相关领域的研究、开发、应用、管理工作,并具有继续攻读智能科学与技术专业以及相关学科的硕士和博士学位的潜能。
主要专业基础课和专业课有:智能科学与技术导论、人工智能基础、数字逻辑与数字系统、计算机组成原理、数据结构、算法设计与分析、计算机网络、编译原理、微机原理与汇编语言、操作系统、程序设计、计算机图形学、数据库概论、数字逻辑与数字系统、自动控制理论、信息系统分析与设计、图像信号处理、机器学习导论、脑与认知科学、模式识别基础、自然语言处理导论、智能信息处理、数据仓库与数据挖掘、机器人学、智能多媒体信息系统等。
本专业学制四年,招收无色盲(弱)的学生,毕业授予工学学士学位。
信息科学技术学院实验室
1、电工电子实验教学中心:
模拟电路实验室、数字电路实验室、电路原理实验室、微机实验室、单片机实验室、EDA实验室、嵌入式系统实验室。
2、计算机基础实验教学中心:
计算机基础实验室
3. 信息科学技术专业实验教学中心:
电子信息工程专业实验室、通信工程专业实验室、电子信息科学与技术专业实验室、自动化专业实验室、测控专业实验室、计算机专业实验室、软件工程专业实验室、网络工程专业实验室
信息科学技术学院研究所
1. 自动化研究中心
2.信号与图像处理研究
3.中国欧盟可用性研究中心
4.移动通信研究所
5.软件工程研究所
‘柒’ 用nero刻录dvd时出现您所添加DVD视频内容的编译类型将不能刻录DVD视频兼容光盘,要创建可在单独DVD视频
刻录成数据光盘,就只能在电脑光驱上播放,或在支持播放数据格式的DVD机上播放。要想在所有DVD机上播放,必须刻录成DVD视频光盘。刻录DVD视频光盘(DVD-Video)方法:以NERO 6.0为例(其它版本大同小异):打开软件,先选择右上角的光盘种类 DVD。接着选择要刻录的分类“照片和视频”。接着在下拉菜单里选择“制作DVD视频光盘”,接着添加要刻的文件,确定后,下一步选择刻录光驱、刻录速度、刻录张数等,点“刻录”即可。如果添加的文件格式是软件不支持的格式,要先用转换软件进行转换,转换成软件支持的格式VOB\BUP\IFO格式(一般转换为 VOB格式 )后,再添加刻录。将文件添加到VIDEO_TS文件夹下。
添加时,如果提示不兼容,可以将转换后的视频文件重命名为:VIDEO_TS.VOB。如果有多段视频文件,可以更名为VTS_01_1.VOB、VTS_01_2.VOB、VTS_01_3.VOB、VTS_01_4.VOB…..。顺序排列。下一步,选择刻录机(一台设备自动识别)和刻录速度、张数; 刻录。这样刻录的DVD光盘是DVD视频光盘,可以在所有家用DVD机上播放。
如果你觉得NERO这个德国软件不大好用,可以下载安装两个全中文软件。一个是“狸窝DVD刻录软件”,是收费软件,要注册成会员才能用。“光盘刻录大师”有免费版,功能虽少于注册版,但已够用。也可以下载注册码注册为正式版。这两款软件由于是全中文的,而且支持的格式较多,一般不用转换格式,很直观,简单易学,按照步骤选择项目,一步步往下走,就可以轻松刻录了。
‘捌’ 多视角DVD是什么
如果说下列文件可能不在dvd视频编译的video_ts目录中,应该是这部分3视角本来是一个文件但是将三个视角分别提取出来变成了3个文件,所以不能添加。
你可以试试用软件将vts_01_6.vob
vts_01_6(1).vob
vts_01_6(2).vob
合成vts_01_6.vob,这样就可以用nero刻了