linuxcom
A. Win和linux怎样用Com连接
串行口的连接已经是个古老的传说或冒险,在网卡相当便宜今天,没人在使用它了。然而如果你的笔记本太老没有网卡又没有必要投资的化,你最好的办法是尝试拆下笔记本硬盘拷贝文件,因为就算费了就牛二虎之力弄成了com互联,也不会有什么好效果,不信你用双windows连以下(比较容易)就知道了。
B. linux下怎样设置com1口,让超级终端通过com1口进行登录
确认有/sbin/agetty,编辑/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因为联路由器缺省一般都是这种速率,也可以设成
19200、38400、57600、115200
修改/etc/securetty,添加一行:ttyS0,确保root用户能登录
重启机器,就可以拔掉鼠标键盘显示器(启动时最好还是要看看输出信息)了
C. LINUX的官方网站
你要那个类型的官方网站?
www.gnu.org
www.linux.org
www.kernel.org
这是linux的核心管网
其他的都是各个发行版的管网
www.ubuntu.com
www.fedoraproject.org
www.redhat.com
www.redflag-linux.com
www.debian.org
www.gentoo.org
http://www.novell.com/linux/
针对常用的 ubuntu fedora redhat 红旗 debian gentoo Suse
D. linux怎么运行.com脚本
楼主是想说的什么问题啊。不清楚, 不过可以帮楼主分析一下的哦
希望可以私信一下。
以后要是遇到了Linux系统问题, shell编程问题, crond问题, 也都可以帮忙搞定哦。
E. linux下能否使用com组件
COM=The Component Object Model组件对象模型
windows的跟linux的不通用
F. LINUX的官方中文网站是什么
Linux本身只是个内核,发布在http://www.kernel.org,并没有官方网站这样的说法
现在用的Linux都是用Linux的内核加上GNU的软件做出来的,GNU的网站是http://www.gnu.org,好像有部分的中文页面,但是想看到整个的中文网站,大概不太行,而且这两个网站都没有什么必要弄中文网站,http://www.kernel.org就是发布Linux内核,http://www.gnu.org是宣传GNU和GPL的地方,还有发布GNU的软件的,所以也没太大的必要弄出中文的网站.
Linux的不同发行版有各自的网站,如果你想看,就到你用的Linux发行版的网站上去看看吧,如果是想学习,那么一本你使用的Linux的用户手册应该会有帮助,或者上Linux的论坛之类的,这个有很多中文的,比如http://www.linuxaid.com.cn
http://www.linuxsir.org之类的,搜索一下可以找到很多的
G. linux操作系统 COM用什么代替
遍,上网的人大部分都隶属于一些研究机构,或者是大学里面的学生、教授,有一个名为 Linus Torvalds 的年轻芬兰大学生在 comp.os.minix 这个新闻群组上发表了这样一封内容不怎麽起眼的 POST:
Hello everybody out there using minix -
I'm doing a (free) operation system (just a hobby,
won't be big and professional like gnu) for 386(486) AT clones.
这个 Linus 的兴趣(hobby)就是 Linux 核心程式 0.02 版的原始码,当初还是个大学生的 Linus 大概完全没想到当初被他视为个人兴趣的程式,在几年以后会有超过千万个使用者,由他自己带头开发的作业系统现在已经在世界各地受到普遍的欢迎,还被视为是软体业巨人微软公司大力促销的 NT 系统最大的竞争对手。
Linux 是一套 Unix-like 的作业系统,是 Unix 的一种,它控制整个系统基本服务的核心程式 (kernel) 是由 Linus 带头开发出来的,“Linux”这个名称便是以“Linus's Minix”来命名,Linus 选择用“大众公有版权” (GPL)的方式来发行这份程式,这个版权允许任何人以任何形式与散 Linux 的原始程式,换句话说,Linux 实际上是“免费的”,使用者在网路上就可以抓到 Linux 的原始程式码,随心所欲的与更改 Linux 的原始程式,在网际网路的日渐盛行以及 Linux 开放自由的版权之下,吸引了无数电脑高手投入开发、改善 Linux 的核心程式,使得 Linux 的功能日见强大,所以今日我们可以在网路上免费下载 Linux 使用,或者花很少的一点费用就可以取得 Linux 光盘,这都是因为 Linux 是 GPL 版权的缘故。
除了核心程式以外,一个作业系统还需要其他的系统程式跟应用程式才有实用性,Linux 系统中常用的系统程式大部份是美国自由软体基金会 (Free Software Foundation) 开发出来的软体,而且也有不少机构或个人为 Linux 开发应用程式,这些程式一样大多都是自由软体,任何人都可以免费的在网路上取得,不过自行去取得这些程式再一一安装非常不便,于是有些公司或团体就会去搜集、整合 Linux 上的程式,把“核心-系统程式-应用程式”总合起来构成一个完整的作业系统,让一般使用者可以简便的安装完整个系统,这就是所谓的“安装套件”(distribution),我们一般讲的 Linux 系统便是针对这些安装套件而言,同样是 Linux 系统,却分成不同公司、机构整合出来的不同安装套件,这就是大家常常在网路上看到 Linux 有那麽多“种”的原因。
Linux 具有 Unix 系统的程式接口跟操作方式,也继承了 Unix 稳定有效率的特点。网路上安装 Linux 的主机连续运做一年以上而不曾当机、不必关机是稀松平常的事,不过 Linux 却不像一般 Unix 要负担庞大的版权费用,也不需要在专属的昂贵硬体上才可以使用;Linux 可以在一般的 i386 PC 上执行,效能又高,自然而然的接收了过去几十年来在 Unix 上累积的程式资源跟使用者,加上 GPL 的版权允许大家自由散 Linux 的原始码,并针对自己的需求修改程式,使得 Linux 在目前已经成为非常受人欢迎的一个多人多工、免费、稳定、效率高、可以在包括 i386、Sparc、Alpha、Mips、PPC 等众多不同电脑系统平台上执行的作业系统
另外,虚机团上产品团购,超级便宜
H. 在LINUX下怎样使用COM组件
COM组件技术在Linux C++下的使用例子
COM的接口
一. 接口概念的出现
承接COM的目的,现在需要将重用的COM对象相互关联在一起,那么有什么好方法呢?
(1)OO中使用public成员来让外界和内部对象进行数据交互。COM中更进一步,只能使用public的成员函数。因为直接访问对象内存不利于实行低耦合的模型,所以数据的交互都应该使用函数调用。
(2)一个COM对象可以提供多个函数供外部调用,这是很自然的。
(3}类似于OO中的多态,一个函数可以被多个COM对象实现,这样调用方可以方便统一的实现所需的功能。
在C++中,我们用public成员函数来提供对外接口,用虚函数来实现多态。因此,对COM的要求,实际上就是需要一个虚基类,其定义了一组函数,然后COM类来继承这个基类,从而也拥有了这组函数。而当COM类要有多个供外界调用的函数时,可以把这些函数分别定义在一些虚基类中,然后再用多重继承的方法使COM类拥有这些函数。
尽管对每个函数都去定义一个虚基类也毫无不可,但很多时候这样分散并不利于管理这些函数。因此常常把一组功能有关联的函数合并在一个虚基类里面。
这个只拥有一组虚函数的基类就是COM中的接口,其目的是定义COM对象被访问的方法。每个接口都被一个GUID标识,称为IID。
二. 接口的本质
如果把C++描述转化成二进制代码的话,就会发现接口本质上就是vtable,位于COM对象的开头,指向一组函数指针。那么为什么是接口而不是单个函数被GUID表识,从而能够被准确定位呢?
还是参考C++编写的COM对象在内存中的二进制表示吧。此时其开头是一列指针,分别对应于多重继承而来的各个接口,然后每个指针指向一个函数指针数组,就是对应于各个接口的成员函数。因此,接口和对象在内存中是平级的!C++实现多重继承时只不过是罗列了多个虚函数表,然后调用函数时再根据具体使用的指针类型,给指向对象的指针加上某个偏移量得到该类型对应的虚函数表,再找到具体的函数。显然指针在接口这一层时可以很自如的通过偏移得到其它的接口指针以及对象指针——而一旦得到具体函数指针后,就很难回头了。
COM规定了一个函数QueryInterface(),用来得到接口的指针。并把QueryInterface()放入接口类IUnknown中,而且规定所有的接口都要从IUnknown继承,换句话说,所有的接口都要实现IUnknown类定义的那几个函数。QueryInterface()的引入可以让调用方在使用COM对象时,能够在COM对象提供的接口之间自由的来回切换。当然,正如上面所述,其本质只是指向接口的指针做了偏移而已。
三. 接口的使用方法
首先,所有COM对象的接口都继承自IUnknown,而IUnknown中是有QueryInterface()函数的。
再次,COM对象的开头就是第一个接口的vtable,所以指向COM对象的指针同时也是指向第一个接口的指针。并且,由于接口都是继承自IUnknown,因此这个指针也一定是指向IUnknown的指针。这样一来的话就能够顺利调用QueryInterface(),得到某个接口的指针了。
然后,不管任何时候,只要有某接口的指针,就可以接着用QueryInterface()来得到该COM对象拥有的其它接口指针。
类厂以及COM对象的构造
二. 类厂概念的引入
类厂(ClassFactory)这个名词其实有点迷惑性,因为这个东西实际上应该叫对象工厂。类厂也是一个普通的COM对象,它有一个特殊的接口IClassFactory,这个接口的一个函数CreateInstance()能够生成COM对象,并返回其需要的接口。
如果把C++中的概念平移过来,就会发现类厂的作用本质上就是那个被C++编译器隐藏了的new。在COM中没有类定义,自然也没有new,要想生成COM对象,只能靠COM类的规范。类厂就实现了从COM类规范到COM对象的过程。
当用C++实现COM的时候,往往在类厂也就是new出来一个对象,然后做一个QueryInterface()得到接口指针。表面上看,中间多了类厂这么一层有点多此一举,实际上这里隐含了根据抽象的COM类在内存中生成COM对象的步骤,绝非可有可无的。
三. 类厂的返回值
在前面说过COM中以COM对象为单位实行重用,COM对象通过接口和外界交互,COM对象的接口之间可以通过偏移来实现跳转。并且,从二进制上看,指向COM对象的指针就是指向COM对象继承的第一个接口的指针。所以,在COM中并不需要一个指向COM对象的指针,而只需要指向该COM对象的某一个接口的指针。因此类厂最后是返回COM对象的一个接口指针来告诉用户,这个COM对象已经生成了。当然,这个接口指针的表识(IID)需要用户提供。
COM对象的调用
AddRef和Release
一. IUnknown接口
按照COM标准,所有的COM接口的前三个函数都必须是IUnknown接口的那三个函数:QueryInterface(),AddRef()和Release()。如果用C++表述的话,就是所有的COM接口都必须从IUnknown这个虚基类继承而来。
QueryInterface()的作用前面已经说过了,是根据IID查询当前COM对象是否有此接口,并返回接口指针。那么AddRef()和Release()呢?
按照字面的意思,AddRef()的意思就是说增加当此接口被引用的次数,而Release()则是释放。实际上也差不多就是这么回事……虽然Release()表面上看起来起一个SubRef()的名字能够更加和AddRef()匹配一点。
二. COM对象的创建过程和引用计数的需求
如果按照一般的思想,COM对象被创建后,大家自由使用就是了,为了什么非要引入AddRef()和Release()函数?其实这里涉及到的问题主要是COM对象的生存期问题。一个COM对象何时被谁创建?何时又被谁释放呢?
最自然的回答肯定是需要时创建以实现应用,不需要时释放以节约系统资源。但是这里实现就有很多问题:首先,按照前面所述,客户并不真正的了解COM对象,它只能提供CLSID来定位COM对象,提供IID来查询接口,然后能做的就是利用接口实现功能。在Windows的COM库中,用CoCreateInstance()函数来封装客户端的调用,然后CoCreateInstance()根据CLSID在注册表中找到实现该对象保存的文件,再根据调用方式的不同(进程内/进程外)将该文件装载入内存,创建类厂,然后用类厂的CreateInstance()接口创建COM对象并返回IID指定的接口。这一连串的工作分的很细,主要的目的就是用中间层,比如COM库函数和标准IClassFactory接口等隔开用户和具体COM对象,实现更好地封装。
既然如此,具体生成COM对象的并不是客户端而是COM组件中和COM对象对应的类厂对象。因此,释放或者说从内存中卸载COM对象的任务也不能是客户端完成。而在COM组件中,类厂只管生成,那么释放的任务就只能交给COM对象自己完成了。
所以,最后的要求就变成了COM对象自己需要知道什么时候能够释放自身,那么就需要有一个量来表示现在到底又多少用户在使用此COM对象,这就是引用计数了。
三. 引用计数的实现
实现引用计数的方法很简单,用一个全局的变量来保存计数,多一个引用时加一,少一个引用时减一。COM规定当创建COM对象时先把计数从0加到1,然后加加减减,直到计数变到0,说明已经没有用户使用该COM对象,那么这个就可以释放资源了。
由于客户端只能对接口操作,因此AddRef()和Release()需要保证能够在任何接口下都能调用,包括IUnknown。这样一来,这两个函数和QueryInterface()并列成为IUnknown的三个成员也就顺理成章了。
这里还有一些小问题。比如说是针对COM对象整体计数呢,还是针对各个接口计数?COM标准没有硬性规定,但是作为COM对象的使用者,客户端必须考虑到不同情况,所以必须是调用增加或减少引用的那个接口的AddRef()和Release()。
COM实现的技术,主要是C++的虚函数、多继承以及动态链接库(DLL)技术。
COM组件的实现:
项目代码如下;
类厂头文件
链表类厂 头文件 ListClassFactory.h
/*************************************************************************
> File Name: ListClassFactory.h
> Created Time: 2016年09月12日 23时53分23秒 CST
************************************************************************/
#ifndef _LIST_CLASS_FACTORY_H
#define _LIST_CLASS_FACTORY_H
#include "../../ibasecom/IUnknown.h"
#include "../../ibasecom/IClassFactory.h"
class ListClassFactory : public IClassFactory
{
private:
ULONG m_cRef;
public:
ListClassFactory(){LogD("ListClassFactory: ","===ListClassFactory()===");}
~ListClassFactory(){LogD("ListClassFactory: ","====~ListClassFactory()=======");}
private:
virtual LONG QueryInterface(const IID& iid, void** ppv);
virtual ULONG AddRef();
virtual ULONG Release();
virtual IUnknown* CreateInstance(const IID& iid,void**ppv);
};
#ifdef __cplusplus
extern "C"
{
#endif
IUnknown* DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv);
IUnknown* (*g_CoCreate)(const IID& iid,void** ppv) = NULL;
#ifdef __cplusplus
}
#endif
#endif
Vector类厂 头文件 VectorClassFactory.h
/*************************************************************************
> File Name: VectorClassFactory.h
> Created Time: 2016年08月26日 23时50分23秒 CST
************************************************************************/
#ifndef _VECTOR_CLASS_FACTORY_H
#define _VECTOR_CLASS_FACTORY_H
#include "../../ibasecom/IUnknown.h"
#include "../../ibasecom/IClassFactory.h"
class VectorClassFactory : public IClassFactory
{
private:
ULONG m_cRef;
public:
VectorClassFactory(){LogD("VectorClassFactory: ","===VectorClassFactory()===");}
~VectorClassFactory(){LogD("VectorClassFactory: ","====~VectorClassFactory()=======");}
private:
virtual LONG QueryInterface(const IID& iid, void** ppv);
virtual ULONG AddRef();
virtual ULONG Release();
virtual IUnknown* CreateInstance(const IID& iid,void**ppv);
};
#ifdef __cplusplus
extern "C"
{
#endif
IUnknown* DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv);
IUnknown* (*g_CoCreate)(const IID& iid,void** ppv) = NULL;
#ifdef __cplusplus
}
#endif
#endif
类厂实现文件 ListClassFactory.cpp
I. linux下COM口设置(minicom)
波特率对不对?用户权限对不对?
用最新版的putty试试,感觉putty的serial比minicom好用
J. Linux是否有类似于COM的组件对象模型
一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)...主要的工作就是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行...