范文一:cs-cart-控制器
Controllers – 控制器
发表于 2012 年 4 月 16 日
Controllers 控制器
Basic schema of the software functioning consists in calling one of the two main executable PHP files (admin.php or index.php) and further consecutive execution of PHP files implementing the program functionality. 软件运行的基本模式是调用两个主程序PHP文件(admin.php或index.php)之一,
然后通过进一步连续执行其它的PHP文件来实现程序功能。
1. index.php 或 admin.php -> 2.prepare.php -> 3. init.php -> 4.
[controller_name].php
In CS-Cart terms a file connected under number four is named a controller. Data handling in the program is performed in this file – extracting the
necessary data from the database, data handling, calculations, transformations, etc. and preparation of the data for further display. 在CS-Cart规则中,上述第4项中被连接的文件被叫做控制器。程序通过这个文
件实施数据处理—包括从数据库中提取必要的数据、数据处理、计算、转换等,
并为进一步显示准备数据。
A path to the controller and its name are defined by the program automatically based on the value of the “dispatch” parameter, which was passed to the main executable file. The “dispatch” parameter has the following format “[controller_name].[mode_name]“, where
“[controller_name]” – is a name of the controller, and “[mode_name]” – mode in which the called controller will work. The name of the called file will be “[controller_name].php”.
通过传递给主程序文件”dispatch”参数的值,程序可以自动定义到控制器的路
径和它的名称。”dispatch”参数格式为
“[controller_name].[mode_name]“,其中 “[controller_name]“是控制器
名称, “[mode_name]” 为所调用控制器的运行模式。调用的文件名将
是”[controller_name].php”。
All controllers for the admin panel (executable file – admin.php) are
located in the “/controllers/admin” directory, for the customer area (index.php) – in the “/controllers/customer” directory. If the called controller is not in these directories, then the system tries to launch it from “controllers/common”. This is done for the situations when the
same controller is to serve the customer and administrator areas and its function is the same for both areas.
所以针对管理面板(执行文件 – admin.php)的控制器都位
于”/controllers/admin”目录,针对客户区域 (index.php)的控制器都位于
“/controllers/customer”目录。如果调用的控制器不在这两个目录,系统将
尝试从”controllers/common”目录读 取。这是为了处理同一个控制器同时为
客户区域和管理员区域服务并且该控制器对两个区域功能一致的情况。
Controller connection is carried out by the function [/core/fn.control.php]/fn_dispatch(), which does not accept any parameters and performs the following main actions: 控制器连接通过函数 [/core/fn.control.php]/fn_dispatch()进行,该函数不
接受任何参数并实施以下主要动作:
1. Checks for validity the parameter “dispatch”.
检查参数 “dispatch”有效性。
2. Checks permissions of the current user for the called controller.
检查当前用户是否具有所调用控制器的权限。
3. Redirects to a secure protocol (HTTPS) when necessary.
如有必要,重定向至安全协议 (HTTPS) 。
4. Prepares an ordered list of precontrollers and postcontrollers (from addons and the core)
for consecutive connection in the right order.
为继续连接准备一个正确顺序的前控制器和后控制器(来自插件和核心)清单。
5. Automatically defines a template to display.
自动定义一个显示用的模板。
Example 1.
We have the value of the parameter “dispatch=products.manage” and the executable file “admin.php” or in other words enter “http://cscart_dir/admin.php?dispatch=products.manage” in the address bar of the browser.
参数值”dispatch=products.manage” ,执行程序为”admin.php”,即在浏览器地址栏输入”http://cscart_dir/admin.php?dispatch=products.manage”。
The connected controller will be located at the following path –
“/controllers/admin/products.php”. The parameter “manage” will be used within the file to define actions that controller must perform with the data. In this example “manage” indicates that the controller should select a list of products from the database and display it on the products page in the administrator area.
将连接的控制器路径为”/controllers/admin/products.php”。参
数”manage”将用来定义控制器对数据实施的动作。在这个例子里
面,”manage”指出控制器将从数据库中选择一些产品并将其显示在管理员区域
的产品页面。
Important! A controller name must be unique. If a controller is defined in the addon and its name coincides with the name of one of the standard controllers, then when calling any of these controllers an error occurs. 重要~控制器名称必须唯一。 如果一个插件定义的控制器名称和标准控制器名
称相同,那么当调用其中任何一个控制器时将出错。
Controller structure 控制器结构
Each controller can contain the following logical blocks: 每个控制器都可以包含以下逻辑区块:
1. Processing of POST request.
处理POST请求
2. Processing of GET request.
处理GET请求
3. Defining local functions used only within a controller.
定义仅被控制器使用的本地函数
The part “[mode_name]” of the parameter “dispatch” is used to set the operating mode for processing GET request.
参数”dispatch”中的 “[mode_name]“部分用来为处理GET请求设定操作模
式。
POST request POST请求
Processing of a POST request should always be performed prior to processing a GET request and there must be a string at the end of the block that returns control from a controller to the function fn_dispatch(). 处理POST请求总是优先于处理GET请求,从控制器传递到函数fn_dispatch()
的控制区块末端总会有一个字符串。
return array(CONTROLLER_STATUS_OK,
“$index_script?dispatch=controller_name$suffix”);
The parameter CONTROLLER_STATUS_OK contains a constant with the success status of the controller performance, the second parameter is a string with URI for redirection after processing the POST request. 参数CONTROLLER_STATUS_OK包含了一个代表控制器运行成功状态的常量,第2
个参数是POST请求后的重定向URI字符串。
Example 1.
1 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
2
3 if ($mode == 'add') {
4 // here comes the code which should be executed when submitting 5 product addition form
6 }
7
8 return array(CONTROLLER_STATUS_OK,
"$index_script?dispatch=products$suffix");
}
GET request GET请求
Section of processing a GET request is always placed after the POST block. 处理GET请求的区块总是放置于POST区块后面。
Example 1.
if ($mode == 'manage') { 1 // here comes the code which should be executed when running 2 "http://cscart_dir/admin.php?dispatch=products.manage" 3 }
Here is given a part of code that checks the value of the parameter “mode”
(dispatch=controller.mode) and executes the code within a conditional operator when the value equals “manage”. This code will be executed on GET request.
这里给出一段检查参数”mode”(dispatch=controller.mode)值并当该值等
于”manage”时运行特定代码的代码。这段代码将在GET请求时被执行。
At the end of the GET mode operation, the controller usually performs one of the following closing actions:
在GET模式操作的结尾,控制器通常会执行下列关闭动作:
1. Transfer of control to the display subsystem or templater, which is the same
传递控制到显示子系统或模板。
2. Redirection by GET method
通过GET方法重定向
3. Completion of controller execution and the program itself without any additional actions:
exit;
不附带任何附加动作完成控制器执行和程序:exit;
In the first case, the control will be transferred to the function fn_dispatch() automatically, if it is not explicitly defined that it is necessary to perform actions under points 2 and 3. To transfer data to
the templater for further display the following structure is used: 第一种情况,控制将自动传递至fn_dispatch()函数,如果它不是明确定义的,
那么就将执行第二和第三项动作。为进一步显示而传递数据到模板将使用下列结
构:
$view->assign(‘template_var_name’, $php_var_name);
Here “template_var_name” defines a name of the variable available in the templater, and “$php_var_name” defines the content of this variable.
这里 “template_var_name” 定义了在模板里面一个有效变量的名称,
“$php_var_name”定义了该变量的内容。
Example 2.
1 if ($mode == 'manage') {
2 $product_name = 'Product 1';
3 $product_description = 'Product description';
4 $view->assign('tpl_product_name', $product_name);
5 $view->assign('tpl_product_description', $product_description);
6 }
After this code is executed in the controller, the control is transferred to the templater, for which two variables $tpl_product_name and $tpl_product_description will be available.
控制器中这段代码执行后,控制将传递给模板,$tpl_product_name 和
$tpl_product_description变量将生效。
FUNCTIONS 函数
Functions within a controller are defined in accordance with general rules of function formatting. If a function of the controller is required to be called in another controller, such a function should be located in the core of the program or addon.
控制器函数按照函数格式通用规则定义。如果一个控制器函数需要被另外的控制
器调用,那么这个函数就应该位于程序核心或插件代码里面。
Available data 有效数据
To work with program data in a controller you should use the following standard arrays.
使用控制器中的程序数据,你需要使用下列标准数组。
1. $_REQUEST – contains all variables coming from GET and POST requests. All variables in
this array are handled in a special way: HTML tags are removed; slashes that are
automatically added by PHP (if a corresponding setting is enabled) are deleted.
$_REQUEST – 包括来自GET和POSt请求的所有变量。该数组中所有变量都以一种特
定方式处理:HTML标记被移除;PHP语言自动添加的斜线(如果相应设置启用)被
删除。
2. $_SESSION – a standard PHP array that stores session data.
$_SESSION – 储存会话数据的标准PHP数组。
3. $Registry – a special static class-repository for the data that should be accessed from any
place of the program. For instance, configurational parameters of the program, read
during startup, are entered into class $Registry. Peculiarity of this class is that any data
stored in it can be cached. This allows, for example, to avoid repeated requests to the
database for seldom updated information by storing it in a cache of class $Registry.
$Registry – 一个可以在程序任何位置访问数据的特定静态类库。例如,程序配置参
数在启动时读取,并被输入类$Registry。该类的特点是任何存储在里面的数据都可
以缓存。通过数据缓存可以避免重复读取在数据库中很少更新的信息的请求。
Transfer of control to templater 传递控制至模板
After a controller is executed and control is returned to fn_dispatch(), it transfers control of the program and the path to the template, which should be processed and displayed, to the templater.
控制器执行完毕后,控制将返回给函数fn_dispatch(),它传递了控制程序和给
模板的路径,它们将被模板生成器执行和显示。
Note. It can be specified in a controller that instead of transferring control to the templater it is necessary to terminate the script execution or redirect to another address.
By default the path to this template is defined automatically as follows: 默认情况下模板路径将自动按以下格式定义:
/[customer|admin|mail]/views/[controller_name]/[mode_name].tpl
Example 1.
http://cscart_dir/admin.php?dispatch=products.manage
The displayed template will be located at the following path: /admin/views/products/manage.tpl
显示模板位于路径:/admin/views/products/manage.tpl
范文二:zen cart模板系统标签
1 商店名称 STORE_NAME 保瑪國際-全球数字点卡权威 商店名称
2 店主 STORE_OWNER bluebc 店主的名字
3 国家或地区 STORE_COUNTRY 44 商店所在的国家或地区
备注: 请记住更新商店所在地区。 zen_cfg_pull_down_country_list(
4 地区 STORE_ZONE 67 商店所在地区 zen_cfg_pull_down_zone_list(
5 即将上市商品排序 EXPECTED_PRODUCTS_SORT desc 即将上市商品方框的排序. zen_cfg_select_option(array('asc', 'desc'),
6 即将上市商品排序字段 EXPECTED_PRODUCTS_FIELD date_expected 即将上市商品方框的排序字段. zen_cfg_select_option(array('products_name', 'date_expected'),
7 使用缺省语言货币 USE_DEFAULT_LANGUAGE_CURRENCY true 自动转换到选择语言的相应货币 zen_cfg_select_option(array('true', 'false'),
8 语言选择 LANGUAGE_DEFAULT_SELECTOR Default 商店缺省的语言选择为商店的设置,还是用户浏览器中的设置?
Default: 商店的缺省设置 zen_cfg_select_option(array('Default', 'Browser'),
9 使用搜索引擎友好的URLs (还在开发中) SEARCH_ENGINE_FRIENDLY_URLS false Use search-engine safe urls for all site links zen_cfg_select_option(array('true', 'false'),
10 添加商品后显示购物车 DISPLAY_CART true 添加商品后显示购物车 (或退回原来的状态) zen_cfg_select_option(array('true', 'false'),
11 缺省搜索操作 ADVANCED_SEARCH_DEFAULT_OPERATOR and 缺省搜索操作 zen_cfg_select_option(array('and', 'or'),
12 商店地址和电话 STORE_NAME_ADDRESS 商店名称 地址 国家 电话 商店名称, 地址和电话号码, 用于打印文件和在线显示 zen_cfg_textarea(
13 显示分类计数 SHOW_COUNTS false 递归计算分类中商品数量 zen_cfg_select_option(array('true', 'false'),
14 税收小数位 TAX_DECIMAL_PLACES 0 税收金额的小数位
15 显示含税价格 DISPLAY_PRICE_WITH_TAX false 显示含税价格 (True) 或 最后再加税 (False) zen_cfg_select_option(array('true', 'false'),
16 在管理页面中显示含税价格 DISPLAY_PRICE_WITH_TAX_ADMIN false 在管理页面中(发票), 显示含税价格 (True) 或 最后再加税 (False) zen_cfg_select_option(array('true', 'false'),
17 商品税的计算 STORE_PRODUCT_TAX_BASIS Shipping 计算商品税的基准. 选项为
Shipping - 基于送货地址
Billing 基于客户帐单地址
Store - 如果Billing/Shipping地区和商店所在地区相同, 采用商店的地址 zen_cfg_select_option(array('Shipping', 'Billing', 'Store'),
18 运费税的计算 STORE_SHIPPING_TAX_BASIS Shipping 计算运费税的基准. 选项为
Shipping - 基于送货地址
Billing 基于客户帐单地址
Store - 如果Billing/Shipping地区和商店所在地区相同, 采用商店的地址 - 货运模块可以覆盖该设置 zen_cfg_select_option(array('Shipping', 'Billing', 'Store'),
19 销售税显示 STORE_TAX_DISPLAY_STATUS 0 即使金额为零也显示销售税
0= 否
1= 是 zen_cfg_select_option(array('0', '1'),
20 管理对话超时秒数 SESSION_TIMEOUT_ADMIN3600 输入以秒为单位的时间. 缺省=3600
例如:3600= 1 小时
备注: 时间太短会导致添加/编辑商品时超时
21 管理设置最大进程执行时间 GLOBAL_SET_TIME_LIMIT 60 输入以秒为单位的时间, 管理设置最大进程执行时间。
缺省=60 秒
例如: 60= 1 分钟
备注: 仅当您进程执行时间有问题时, 才需要修改该时间限制
22 显示是否有新版本 SHOW_VERSION_UPDATE_IN_HEADER true 自动显示是否有Zen Cart新版本。打开该选项有时会降低管理页面打开时间。(显示于登录后的主索引页面和服务器信息页面) zen_cfg_select_option(array('true', 'false'),
23 商店模式 STORE_STATUS 0 商店模式
0= 正常
1= 商品展示, 不显示价格
2= 商品展示, 显示价格 zen_cfg_select_option(array('0', '1', '2'),
24 服务器运行时数 DISPLAY_SERVER_UPTIME true 显示服务器运行时数在某些服务器上会导致日志文件中有错误记录。(true = 显示, false = 不显示) zen_cfg_select_option(array('true', 'false'),
25 丢失页面检测 MISSING_PAGE_CHECK Page Not Found Zen Cart能够检测不存在的页面并自动调转到索引页面。调试时可关闭该选项。
缺省=On
On = 如有不存在的页面,调整到'index'
Off = 不检测不存在的页面
Page Not Found = 显示页面不存在的提示页面 zen_cfg_select_option(array('On', 'Off', 'Page Not Found'),
26 cURL代理服务器状态 CURL_PROXY_REQUIRED False 您的cURL是否使用代理服务器? zen_cfg_select_option(array('True', 'False'),
27 cURL代理服务器地址 CURL_PROXY_SERVER_DETAILS 如果您使用GoDaddy或其他主机,并需要通过cURL使用代理服务器,在这里输入地址。
格式: 地址:端口
例如: GoDaddy主机,输入: proxy.shr.secureserver.net:3128 或 64.202.165.130:3128
28 HTML编辑器 HTML_EDITOR_PREFERENCE HTMLAREA 请选择用于管理电子邮件、电子商情和商品简介的文本编辑器。 zen_cfg_pull_down_htmleditors(
29 打开phpBB链接? PHPBB_LINKS_ENABLED Zen Cart的新帐号要和您的(已安装)phpBB论坛同步吗? zen_cfg_select_option(array('true', 'false'),
30 显示分类计数 - 管理员 SHOW_COUNTS_ADMIN true 在管理页面显示分类计数吗? zen_cfg_select_option(array('true', 'false'),
31 货币兑换比率 CURRENCY_UPLIFT_RATIO 1.05 自动更新汇率时,需要使用的"额外"比率是多少?
例如: 从汇率服务器更新银行汇率后,您要在银行汇率基础上增加多少比例来设置给客户的汇率?
缺省: 1.05
将公布的银行汇率乘以1.05作为商店的汇率。
32 姓氏 ENTRY_FIRST_NAME_MIN_LENGTH 1 姓氏最少字数
33 名字 ENTRY_LAST_NAME_MIN_LENGTH 1 名字最少字数
34 生日 ENTRY_DOB_MIN_LENGTH 10 生日最少字数
35 电子邮件 ENTRY_EMAIL_ADDRESS_MIN_LENGTH 6 电子邮件地址最少字数
36 地址 ENTRY_STREET_ADDRESS_MIN_LENGTH 4 地址最少字数
37 公司 ENTRY_COMPANY_MIN_LENGTH 0 公司名称最少字数
38 邮编 ENTRY_POSTCODE_MIN_LENGTH 4 邮编最少字数
39 城市 ENTRY_CITY_MIN_LENGTH 2 城市最少字数
40 省份 ENTRY_STATE_MIN_LENGTH 2 省份最少字数
41 电话号码 ENTRY_TELEPHONE_MIN_LENGTH 6 电话号码最少字数
42 密码 ENTRY_PASSWORD_MIN_LENGTH 5 密码最少字数
43 信用卡持卡人姓名 CC_OWNER_MIN_LENGTH 2 信用卡持卡人姓名最少字数
44 信用卡号 CC_NUMBER_MIN_LENGTH 10 信用卡号码最少字数
45 信用卡CVV校验码 CC_CVV_MIN_LENGTH 3 信用卡CVV校验码最少字数
46 商品评论文字 REVIEW_TEXT_MIN_LENGTH 1 商品评论文字最少字数
47 畅销商品 MIN_DISPLAY_BESTSELLERS 1 成为畅销商品的最小销售数量
48 同时购买商品 MIN_DISPLAY_ALSO_PURCHASED 1 显示为客户同时购买商品的最少数量
49 昵称 ENTRY_NICK_MIN_LENGTH 1 昵称最少字数
50 地址簿条目 MAX_ADDRESS_BOOK_ENTRIES 5 每个客户地址簿中最多允许的条目
51 每页搜索结果 MAX_DISPLAY_SEARCH_RESULTS 20 搜索结果页面显示的商品数量
52 前/后页导航页链接 MAX_DISPLAY_PAGE_LINKS 5 导航链接显示的数目的数量
53 首页新进商品数量 MAX_DISPLAY_NEW_PRODUCTS 6 显示在首页的新进商品数量
54 首页推荐商品数量 MAX_DISPLAY_SEARCH_RESULTS_FEATURED 6 显示在首页的推荐商品数量
55 首页特价商品数量 MAX_DISPLAY_SPECIAL_PRODUCTS_INDEX 6 显示在首页的特价商品数量
56 即将上市商品数量 MAX_DISPLAY_UPCOMING_PRODUCTS 10 显示的即将上市商品数量
57 特价商品列表数量 MAX_DISPLAY_SPECIAL_PRODUCTS 6 特价商品列表每页显示的商品数量
58 新进商品列表数量 MAX_DISPLAY_PRODUCTS_NEW 10 新进商品列表每页显示的商品数量
59 推荐商品列表数量 MAX_DISPLAY_PRODUCTS_FEATURED_PRODUCTS 10 推荐商品列表每页显示的商品数量
60 所有商品列表数量 MAX_DISPLAY_PRODUCTS_ALL 10 所有商品列表每页显示的商品数量
61 分类商品列表数量 MAX_DISPLAY_PRODUCTS_LISTING 10 分类商品列表每页显示的商品数量
62 畅销商品数量 MAX_DISPLAY_BESTSELLERS 10 畅销商品数量
63 同时购买商品数量 MAX_DISPLAY_ALSO_PURCHASED 6 '客户同时购买的商品'方框中显示的商品数量
64 边框中随机推荐商品数量 MAX_RANDOM_SELECT_FEATURED_PRODUCTS 2 在边框中显示的随机推荐商品的数量
输入在本边框中同时显示的商品数量。
本边框中显示多少商品?
65 边框中随机新进商品数量 MAX_RANDOM_SELECT_NEW 3 在边框中显示的随机新进商品的数量
输入在本边框中同时显示的商品数量。
本边框中显示多少商品?
66 边框中随机特价商品数量 MAX_RANDOM_SELECT_SPECIALS 2 在边框中显示的随机特价商品的数量
输入在本边框中同时显示的商品数量。
本边框中显示多少商品?
67 边框中随机商品评论数量 MAX_RANDOM_SELECT_REVIEWS 1 在边框中显示的随机商品评论的数量
输入在本边框中同时显示的商品数量。
本边框中显示多少商品?
68 每页商品评论数量 MAX_DISPLAY_NEW_REVIEWS 6 每页显示的商品评论数量
69 厂商列表 - 滚动栏大小/样式 MAX_MANUFACTURERS_LIST 3 滚动栏窗口里显示的厂商数目。如果设为1或0显示下拉菜单
70 厂商列表 - 检验商品存在 PRODUCTS_MANUFACTURERS_STATUS 1 要显示厂商名字,保证至少存在一个有效商品
提示: 当该开关为开启时,如果有很多商品或厂商,会影响网站速度
0= 关 1= 开 zen_cfg_select_option(array('0', '1'),
71 音乐类型列表 - 滚动栏大小/样式 MAX_MUSIC_GENRES_LIST 3 滚动栏窗口里显示的音乐类型数目. 如果设为1或0会显示下拉菜单。
72 唱片公司列表 - 滚动栏大小/样式 MAX_RECORD_COMPANY_LIST 3 滚动栏窗口里显示的唱片公司数目. 如果设为1或0会显示下拉菜单。
73 唱片公司名称长度 MAX_DISPLAY_RECORD_COMPANY_NAME_LEN 15 用于唱片公司栏; 唱片公司名称显示的最大长度. 太长的名字会被截断.
74 音乐类型名称长度 MAX_DISPLAY_MUSIC_GENRES_NAME_LEN 15 用于音乐类型栏; 音乐类型名称显示的最大长度. 太长的名字会被截断.
75 厂商名字长度 MAX_DISPLAY_MANUFACTURER_NAME_LEN 15 用于厂商栏; 厂商名字显示的最大长度. 太长的名字会被截断.
76 每行分类数目 MAX_DISPLAY_CATEGORIES_PER_ROW 3 每行分类数目
77 最近购买边框- 备注: 边框已关闭 MAX_DISPLAY_PRODUCTS_IN_ORDER_HISTORY_BOX 6 最近购买边框中显示的商品数量
78 每页显示的客户订单数 MAX_DISPLAY_ORDER_HISTORY 10 '我的帐号'订单历史中显示的订单数目
79 客户页显示最大客户数 MAX_DISPLAY_SEARCH_RESULTS_CUSTOMER 20
80 订单页显示最大订单数 MAX_DISPLAY_SEARCH_RESULTS_ORDERS 20
81 分析系统页面显示的商品数 MAX_DISPLAY_SEARCH_RESULTS_REPORTS 20
82 最大分类商品显示列表 MAX_DISPLAY_RESULTS_CATEGORIES 10 每页显示的商品数目
83 商品属性 - 选项名称和值的显示 MAX_ROW_LISTS_OPTIONS 10 显示在商品属性页面的选项名称和值的数量
84 商品属性 - 属性数量的显示 MAX_ROW_LISTS_ATTRIBUTES_CONTROLLER 30 显示在商品属性控制页面的属性数量
85 商品属性 - 下载管理显示 MAX_DISPLAY_SEARCH_RESULTS_DOWNLOADS_MANAGER 30 下载管理页面显示的下载数量
86 推荐商品 - 显示在管理页面的数量 MAX_DISPLAY_SEARCH_RESULTS_FEATURED_ADMIN 10 管理页面下每屏的推荐商品数量
87 新进商品的定义 SHOW_NEW_PRODUCTS_LIMIT 0 新进商品列表的定义
0= 所有商品
1= 当前月份
7= 7 天
14= 14 天
30= 30 天
60= 60 天
90= 90 天
120= 120 天 zen_cfg_select_option(array('0', '1', '7', '14', '30', '60', '90', '120'),
88 显示语言图标的数目 MAX_LANGUAGE_FLAGS_COLUMNS 3 语言边框中每行显示的语言图标的数目
89 最大文件上传大小 MAX_FILE_UPLOAD_SIZE 2048000 允许上传文件的大小
缺省= 2048000
90 允许上传的文件名后缀 UPLOAD_FILENAME_EXTENSIONS jpg,jpeg,gif,png,eps,cdr,ai,pdf,tif,tiff,bmp,zip 列出允许客户上传到您网站的文件类型 (文件名后缀)。用逗号(,)分开。不要包含点(.)。
建议设置: "jpg,jpeg,gif,png,eps,cdr,ai,pdf,tif,tiff,bmp,zip" zen_cfg_textarea(
91 管理订单下显示的订单内容 MAX_DISPLAY_RESULTS_ORDERS_DETAILS_LISTING 0 最多订单内容数
0 = 无限制
92 管理页面显示的PayPal IPN的数量 MAX_DISPLAY_SEARCH_RESULTS_PAYPAL_IPN 20 管理页面显示PayPal IPN的数量
缺省为20
93 商品链接多个分类的显示 MAX_DISPLAY_PRODUCTS_TO_CATEGORIES_COLUMNS 3 商品链接到多个分类的管理界面下,显示的列数
3 = 缺省
94 简易页面的显示数量 MAX_DISPLAY_SEARCH_RESULTS_EZPAGE 20 简易页面的显示数量
20 = 缺省
95 小图像宽度 SMALL_IMAGE_WIDTH 100 小图像象素宽度
96 小图像高度 SMALL_IMAGE_HEIGHT 80 小图像象素高度
97 标题图像宽度 - 管理页面 HEADING_IMAGE_WIDTH 57 管理页面的标题图像象素宽度
说明: 该值调整管理页面的间距,或可用在管理页面增加标题图像
98 标题图像高度 - 管理页面 HEADING_IMAGE_HEIGHT 40 管理页面的标题图像象素高度
说明: 该值调整管理页面的间距,或可用在管理页面增加标题图像
99 子分类图像宽度 SUBCATEGORY_IMAGE_WIDTH 100 子分类图像象素宽度
100 子分类图像高度 SUBCATEGORY_IMAGE_HEIGHT 57 子分类图像象素高度
范文三:Breakfast_A la cart menu 零点早餐菜单
Brasserie Breakfast Menu
早餐
6:00am to 10:30am精彩内容,尽在百度攻略:https://gl.baidu.com
Breakfast Set 早餐套餐
*All our breakfast sets are served with fresh juice, milk or soy milk, freshly brewed coffee or tea
所有早餐菜式均可搭配果汁,牛奶,豆浆,现磨咖啡及茶 American Breakfast 108 美式套餐精彩内容,尽在百度攻略:https://gl.baidu.com
White or whole wheat toast basket Served with butter, jam and honey
原味或全麦吐司篮配黄油,果酱,及蜂蜜 Fresh fruit with yogurt and honey 鲜果盘配酸奶及蜂蜜
Two Eggs your way 双蛋任选 Choice of:精彩内容,尽在百度攻略:https://gl.baidu.com
Hash brown, breakfast potato, sausage, bacon, ham, grilled tomato, mushrooms
薯饼,烤土豆,香肠,烟肉,火腿,扒番茄及蘑菇
Continental Breakfast Set 88 欧陆式套餐精彩内容,尽在百度攻略:https://gl.baidu.com
Pastry basket, white or whole wheat toast basket Served with butter, jam and honey
早餐面包篮原味或全麦吐司配黄油,果酱及蜂蜜 Fresh fruit
鲜水果盘精彩内容,尽在百度攻略:https://gl.baidu.com
Healthy Breakfast Set 98 健康套餐
Special K or Raisin Bran 特色K麦维或提子干麦维精彩内容,尽在百度攻略:https://gl.baidu.com
Yogurt with fresh fruit, and honey 酸奶配水果盘及蜂蜜 Whole wheat toast 全麦吐司
Beverage Egg white omelet with mushrooms and spinach
饮料 蘑菇菠菜蛋白蛋卷精彩内容,尽在百度攻略:https://gl.baidu.com
Chilled juice 25
各式果汁精彩内容,尽在百度攻略:https://gl.baidu.com
Pastries basket with butter, jam and honey 45
Orange, Tomato, Apple, Grapefruit
各式早餐面包篮配黄油,果酱及蜂蜜精彩内容,尽在百度攻略:https://gl.baidu.com
橙汁,蕃茄汁,苹果汁,西柚汁
29
Fresh juice 35精彩内容,尽在百度攻略:https://gl.baidu.com
鲜榨果汁
香蕉草莓雪爽
Orange, Carrot, Watermelon, Carrot & orange精彩内容,尽在百度攻略:https://gl.baidu.com
35
鲜橙汁,鲜胡萝卜汁,鲜西瓜汁, 鲜胡萝卜和橙汁
with brown sugar精彩内容,尽在百度攻略:https://gl.baidu.com
Milk 25
热燕麦粥配红糖
牛奶精彩内容,尽在百度攻略:https://gl.baidu.com
Cereal 28
Milk hot/cold, or Skim milk hot/cold or Soy milk
Corn flakes, Muesli, Special K, Frosties, Raisin Bran精彩内容,尽在百度攻略:https://gl.baidu.com
全脂牛奶 热/冷, 或多或少脱脂奶 热/冷, 或豆浆
麦片精选,
Hot beverages 25精彩内容,尽在百度攻略:https://gl.baidu.com
玉米, 健康麦维,特色K麦维, 香甜玉米片, 提子干麦维
Yogurt With toasted nuts and honey
热饮精彩内容,尽在百度攻略:https://gl.baidu.com
Freshly brewed coffee, Decaffeinated, Hot chocolate, Green tea, 配果仁,蜂蜜
With berries and brown sugar 30 Jasmine tea, Chamomile tea, English breakfast tea, Earl Grey tea
现磨咖啡, 低因咖啡, 热巧克力, 绿茶, 茉莉花茶, 甘菊茶,精彩内容,尽在百度攻略:https://gl.baidu.com
英式早茶, 伯爵茶
Contain Nuts
所有价格以人民币计价并加收15%服务费精彩内容,尽在百度攻略:https://gl.baidu.com
Kid Corner 儿童菜单
Cereal 28 Corn flakes, Muesli, Special K, Frosties, Raisin Bran 麦片精选,精彩内容,尽在百度攻略:https://gl.baidu.com
玉米, 健康麦维,特色K麦维, 香甜玉米片, 提子干麦维 Mini pancakes with butter, maple syrup and icing sugar 39 迷你早餐薄饼, 配黄油,枫叶糖浆及糖霜
Waffle with whipped cream and fresh fruit 40 华芙饼, 配鲜奶油及鲜水果
French toast with cinnamon sugar and butter 29 法式吐司,配玉桂及黄油精彩内容,尽在百度攻略:https://gl.baidu.com
Egg your way One egg, hash brown, bacon and toast32 任选搭配, 单蛋,早餐土豆,烟肉及吐司
Classic Eggs Benedict 80
English muffin topped with Canadian bacon, poached eggs and hollandaise sauce精彩内容,尽在百度攻略:https://gl.baidu.com
经典班尼迪式蛋,英式松饼配烟肉及荷兰汁
He Shan Zhi Eggs Benedict 99
Crab and spring onion cake topped with bacon, poached eggs, ginger scallion hollandaise sauce精彩内容,尽在百度攻略:https://gl.baidu.com
主厨水波蛋,蟹饼,烟肉及姜葱荷兰汁
Three eggs omelet 68
Ham, bacon, cheese, bell peppers, tomato, mushrooms, onion 三蛋蛋卷,配火腿,烟肉,芝士,甜椒,蕃茄,蘑菇,及洋葱 Choice of: Hash brown, breakfast potato, sausage, bacon 可任选搭配:薯饼,烤薯,香肠,烟肉精彩内容,尽在百度攻略:https://gl.baidu.com
Renaissance pancake stack, butter, hot maple syrup 59 经典早餐薄饼, 配黄油,热枫叶糖浆 Waffle, berry jam and whipped cream 69 华芙饼, 配浆果果酱,起发奶油
2011/09
范文四:matlab id3和 cart决策树算法源代码
function D = CART(train_features, train_targets, params, region)
% Classify using classification and regression trees % Inputs:
% features - Train features
% targets - Train targets
% params - [Impurity type, Percentage of incorrectly assigned samples at a node]
% Impurity can be: Entropy, Variance (or Gini), or Missclassification
% region - Decision region vector: [-x x -y y number_of_points] %
% Outputs
% D - Decision sufrace
[Ni, M] = size(train_features);
%Get parameters
[split_type, inc_node] = process_params(params);
%For the decision region
N = region(5);
mx = ones(N,1) * linspace (region(1),region(2),N); my = linspace (region(3),region(4),N)' * ones(1,N); flatxy = [mx(:), my(:)]';
%Preprocessing
[f, t, UW, m] = PCA(train_features, train_targets, Ni, region); train_features = UW * (train_features - m*ones(1,M));; flatxy = UW * (flatxy - m*ones(1,N^2));;
%Build the tree recursively
disp('Building tree')
tree = make_tree(train_features, train_targets, M, split_type, inc_node, region);
%Make the decision region according to the tree
disp('Building decision surface using the tree')
targets = use_tree(flatxy, 1:N^2, tree);
D = reshape(targets,N,N);
%END
function targets = use_tree(features, indices, tree) %Classify recursively using a tree
if isnumeric(tree.Raction)
%Reached an end node
targets = zeros(1,size(features,2));
targets(indices) = tree.Raction(1);
else
%Reached a branching, so:
%Find who goes where
in_right = indices(find(eval(tree.Raction)));
in_left = indices(find(eval(tree.Laction)));
Ltargets = use_tree(features, in_left, tree.left);
Rtargets = use_tree(features, in_right, tree.right);
targets = Ltargets + Rtargets;
end
%END use_tree
function tree = make_tree(features, targets, Dlength, split_type,
inc_node, region)
%Build a tree recursively
if (length(unique(targets)) == 1),
%There is only one type of targets, and this generates a warning,
so deal with it separately
tree.right = [];
tree.left = [];
tree.Raction = targets(1);
tree.Laction = targets(1);
break
end
[Ni, M] = size(features);
Nt = unique(targets);
N = hist(targets, Nt);
if ((sum(N < dlength*inc_node)="=" length(nt)="" -="" 1)="" |="" (m="=" 1)),="">
%No further splitting is neccessary
tree.right = [];
tree.left = [];
if (length(Nt) ~= 1),
MLlabel = find(N == max(N));
else
MLlabel = 1;
end
tree.Raction = Nt(MLlabel);
tree.Laction = Nt(MLlabel);
else
%Split the node according to the splitting criterion
deltaI = zeros(1,Ni);
split_point = zeros(1,Ni);
op = optimset('Display', 'off');
for i = 1:Ni,
split_point(i) = fminbnd('CARTfunctions', region(i*2-1), region(i*2), op, features, targets, i, split_type);
I(i) = feval('CARTfunctions', split_point(i), features, targets, i, split_type);
end
[m, dim] = min(I);
loc = split_point(dim);
%So, the split is to be on dimention 'dim' at location 'loc'
indices = 1:M;
tree.Raction= ['features(' num2str(dim) ',indices) > ' num2str(loc)];
tree.Laction= ['features(' num2str(dim) ',indices) <= '="" num2str(loc)];="">=>
in_right = find(eval(tree.Raction));
in_left = find(eval(tree.Laction));
if isempty(in_right) | isempty(in_left)
%No possible split found
tree.right = [];
tree.left = [];
if (length(Nt) ~= 1),
MLlabel = find(N == max(N));
else
MLlabel = 1;
end
tree.Raction = Nt(MLlabel);
tree.Laction = Nt(MLlabel);
else
%...It's possible to build new nodes
tree.right = make_tree(features(:,in_right), targets(in_right),
Dlength, split_type, inc_node, region);
tree.left = make_tree(features(:,in_left), targets(in_left), Dlength, split_type, inc_node, region);
end
end
////////////////////////////////////////////////////////////////////////////////////////////
function D = ID3(train_features, train_targets, params, region)
% Classify using Quinlan??s ID3 algorithm
% Inputs:
% features - Train features
% targets - Train targets
% params - [Number of bins for the data, Percentage of incorrectly assigned samples at a node]
% region - Decision region vector: [-x x -y y number_of_points] %
% Outputs
% D - Decision sufrace
[Ni, M] = size(train_features);
%Get parameters
[Nbins, inc_node] = process_params(params);
inc_node = inc_node*M/100;
%For the decision region
N = region(5);
mx = ones(N,1) * linspace (region(1),region(2),N);
my = linspace (region(3),region(4),N)?? * ones(1,N); flatxy = [mx(:), my(:)]??;
%Preprocessing
[f, t, UW, m] = PCA(train_features, train_targets, Ni, region); train_features = UW * (train_features - m*ones(1,M));; flatxy = UW * (flatxy - m*ones(1,N^2));;
%First, bin the data and the decision region data
[H, binned_features]= high_histogram(train_features, Nbins, region); [H, binned_xy] = high_histogram(flatxy, Nbins, region);
%Build the tree recursively
disp(??Building tree??)
tree = make_tree(binned_features, train_targets, inc_node, Nbins);
%Make the decision region according to the tree disp(??Building decision surface using the tree??) targets = use_tree(binned_xy, 1:N^2, tree, Nbins, unique(train_targets));
D = reshape(targets,N,N);
%END
function targets = use_tree(features, indices, tree, Nbins, Uc)
%Classify recursively using a tree
targets = zeros(1, size(features,2));
if (size(features,1) == 1),
%Only one dimension left, so work on it for i = 1:Nbins,
in = indices(find(features(indices) == i)); if ~isempty(in),
if isfinite(tree.child(i)),
targets(in) = tree.child(i);
else
%No data was found in the training set for this bin, so choose it
randomally
n = 1 + floor(rand(1)*length(Uc));
targets(in) = Uc(n);
end
end
end
break
end
%This is not the last level of the tree, so: %First, find the dimension we are to work on dim = tree.split_dim;
dims= find(~ismember(1:size(features,1), dim));
%And classify according to it
for i = 1:Nbins,
in = indices(find(features(dim, indices) == i)); targets = targets + use_tree(features(dims, :), in, tree.child(i),
Nbins, Uc);
end
%END use_tree
function tree = make_tree(features, targets, inc_node, Nbins)
%Build a tree recursively
[Ni, L] = size(features);
Uc = unique(targets);
%When to stop: If the dimension is one or the number of examples is
small
if ((Ni == 1) | (inc_node > L)), %Compute the children non-recursively for i = 1:Nbins,
tree.split_dim = 0;
indices = find(features == i);
if ~isempty(indices),
if (length(unique(targets(indices))) == 1), tree.child(i) = targets(indices(1)); else
H = hist(targets(indices), Uc); [m, T] = max(H);
tree.child(i) = Uc(T);
end
else
tree.child(i) = inf;
end
end
break
end
%Compute the node??s I
for i = 1:Ni,
Pnode(i) = length(find(targets == Uc(i))) / L; end
Inode = -sum(Pnode.*log(Pnode)/log(2));
%For each dimension, compute the gain ratio impurity
delta_Ib = zeros(1, Ni);
P = zeros(length(Uc), Nbins);
for i = 1:Ni,
for j = 1:length(Uc),
for k = 1:Nbins,
indices = find((targets == Uc(j)) & (features(i,:) == k));
P(j,k) = length(indices);
end
end
Pk = sum(P);
P = P/L;
Pk = Pk/sum(Pk);
info = sum(-P.*log(eps+P)/log(2)); delta_Ib(i) = (Inode-sum(Pk.*info))/-sum(Pk.*log(eps+Pk)/log(2));
end
%Find the dimension minimizing delta_Ib [m, dim] = max(delta_Ib);
%Split along the ??dim?? dimension tree.split_dim = dim;
dims = find(~ismember(1:Ni, dim)); for i = 1:Nbins,
indices = find(features(dim, :) == i); tree.child(i) = make_tree(features(dims, indices), targets(indices),
inc_node, Nbins);
end
范文五:UWB 技术
UWB 技术
1 UWB的产生与发展
超宽带(UWB)有着悠久的发展历史, 但在 1989年之前, 超宽带这一术语并不 常用,在信号的带宽和频谱结构方面也没有明确的规定。1989年,美国国防部 高级研究计划署(DARPA)首先采用超宽带这一术语,并规定:若信号在-20 dB 处 的绝对带宽大于 1.5 GHz或相对带宽大于 25%,则该信号为超宽带信号。此后, 超宽带这个术语才被沿用下来。绝对带宽和相对带宽定义如下: 绝对带宽 BWAbsolute =f H -f L,相对带宽 。 其中,f H为信号在-20 dB辐射点对应的上限频率、f L为信号在-20 dB辐射点
对应的下限频率。图 1给出了带宽计算示意图。可见,UWB 是指具有很高带宽比 (射频带宽与其中心频率之比)的无线电技术。
2002年 2月,FCC 批准 UWB 技术进入民用领域,并对 UWB 进行了重新定义, 规定 UWB 信号为相对带宽大于 20%或-10 dB 带宽大于 500 MHz 的无线电信号。根 据 UWB 系统的具体应用, 分为成像系统、 车载雷达系统、 通信与测量系统三大类。 表 1:FCC UWB发射功率限制表
Frequency Band (MHz) Imaging below 960MHz Imaging, Mid-Freq uency Imaging, High Frequenc y Indoor applicat ions Hand held, includin g Vehicula r radar 0.009-960 §15.2091§15.209§15.209§15.209§15.209 §15.2091 §15.209相关规定
频段(MHz ) 场强(μV/米) 测量距离(米)
300
30
960-1610 -65.3 -53.3 -65.3 -75.3 -75.3 -75.3 1610-1990 -53.3 -51.3 -53.3 -53.3 -63.3 -61.3 1990-3100 -51.3 -41.3 -51.3 -51.3 -61.3 -61.3 3100-10600 -51.3 -41.3 -41.3 -41.3 -41.3 -61.3 10600-22000 -51.3 -51.3 -51.3 -51.3 -61.3 -61.3 22000-29000 -51.3 -51.3 -51.3 -51.3 -61.3 -41.3 >29000 -51.3 -51.3 -51.3 -51.3 -61.3 -51.3
2 UWB的技术特点
(1)传输速率高,空间容量大
根据仙农(Shannon)信道容量公式,在加性高斯白噪声(AWGN)信道中,系统 无差错传输速率的上限为:
C=B×log2(1+SNR ) (1)
其中,B(单位:Hz)为信道带宽,SNR 为信噪比。在 UWB 系统中,信号带宽 B 高达 500 MHz~7.5 GHz。因此,即使信噪比 SNR 很低,UWB 系统也可以在短距离 上实现几百兆至 1 Gb/s的传输速率。例如,如果使用 7 GHz带宽,即使信噪比 低至-10 dB,其理论信道容量也可达到 1 Gb/s。因此,将 UWB 技术应用于短距 离高速传输场合(如高速 WPAN)是非常合适的,可以极大地提高空间容量。理论 研究表明,基于 UWB 的 WPAN 可达的空间容量比目前 WLAN 标准 IEEE 802.11.a高出 1~2个数量级。
(2)适合短距离通信
按照 FCC 规定,UWB 系统的可辐射功率非常有限,3.1 GHz~10.6 GHz频段 总辐射功率仅 0.55 mW,远低于传统窄带系统。随着传输距离的增加,信号功率 将不断衰减。因此,接收信噪比可以表示成传输距离的函数 SNRr (d )。根据仙 农公式,信道容量可以表示成距离的函数
C (d )=B×log2[1+SNRr (d )] (2)
另外, 超宽带信号具有极其丰富的频率成分。 众所周知, 无线信道在不同频 段表现出不同的衰落特性。 由于随着传输距离的增加高频信号衰落极快, 这导致 UWB 信号产生失真,从而严重影响系统性能。研究表明,当收发信机之间距离小 于 10 m时,UWB 系统的信道容量高于 5 GHz频段的 WLAN 系统,收发信机之间距 离超过 12 m 时,UWB 系统在信道容量上的优势将不复存在。因此,UWB 系统特别 适合于短距离通信。
(3)具有良好的共存性和保密性
由于 UWB 系统辐射谱密度极低(小于-41.3 dBm/MHz),对传统的窄带系统来 讲,UWB 信号谱密度甚至低至背景噪声电平以下,UWB 信号对窄带系统的干扰可 以视作宽带白噪声。因此,UWB 系统与传统的窄带系统有着良好的共存性,这对 提高日益紧张的无线频谱资源的利用率是非常有利的。 同时, 极低的辐射谱密度 使 UWB 信号具有很强的隐蔽性,很难被截获,这对提高通信保密性非常有利。 (4)多径分辨能力强,定位精度高
由于 UWB 信号采用持续时间极短的窄脉冲,其时间、空间分辨能力都很强。 因此,UWB 信号的多径分辨率极高。极高的多径分辨能力赋予 UWB 信号高精度的 测距、定位能力。对于通信系统,必须辩证地分析 UWB 信号的多径分辨力。无线
信道的时间选择性和频率选择性是制约无线通信系统性能的关键因素。 在窄带系 统中, 不可分辨的多径将导致衰落, 而 UWB 信号可以将它们分开并利用分集接收 技术进行合并。因此,UWB 系统具有很强的抗衰落能力。但 UWB 信号极高的多径 分辨力也导致信号能量产生严重的时间弥散(频率选择性衰落), 接收机必须通过 牺牲复杂度(增加分集重数)以捕获足够的信号能量。 这将对接收机设计提出严峻 挑战。 在实际的 UWB 系统设计中, 必须折衷考虑信号带宽和接收机复杂度, 得到 理想的性价比。
(5)体积小、功耗低
传统的 UWB 技术无需正弦载波, 数据被调制在纳秒级或亚纳秒级基带窄脉冲 上传输, 接收机利用相关器直接完成信号检测。 收发信机不需要复杂的载频调制 /解调电路和滤波器。因此,可以大大降低系统复杂度,减小收发信机体积和功 耗。FCC 对 UWB 的新定义在一定程度上增加了无载波脉冲成形的实现难度,但随 着半导体技术的发展和新型脉冲产生技术的不断涌现, UWB 系统仍然继承了传统 UWB 体积小、功耗低的特点。
3 UWB系统方案
UWB系统方案需要根据具体应用需求、规则约束和信道特征进行优化选择。 需要重点考虑的几个内容有:频带规划、调制与多址方案、共存性问题、系统复 杂度、成本与功耗等。按照美国联邦通信委员会(FCC)规定,UWB 信号的可用带 宽为 7.5 GHz,瞬时辐射信号带宽应大于 500 MHz。对于特定的应用,系统频带 规划和应用方案需要综合考虑各种因素进行合理选择。
目前已有的系统方案可以分为单频带和多频带两种体制, 如图 2、 图 3所示。 在多带体制中,根据子带调制方式又分为多带脉冲调制和多带正交频分复用 (OFDM)调制两种方案。
图 2 单带系统
图 3 多带系统
3.1 单带系统
在单频带系统中, 仅使用单一的成形脉冲进行数据传输, 信号频谱覆盖免授 权频谱 3.1~10.6 GHz的一部分或全部,通常信号带宽高达几个吉赫兹。图 4为单带脉冲 UWB 系统信号示意图。 由于信号带宽很大, 其多径分辨率很高, 抗衰 落能力强, 采用瑞克接收机可以有效地对抗频率选择性衰落。 但由于信号的时间 弥散严重, 若采用瑞克接收机则需要较多的叉指数, 增加了接收机复杂度。 同时, 在数字接收机中, 单带信号对模数转换器(ADC)的采样率和数字信号处理器(DSP)的处理速度提出很高要求, 这在一定程度上将增加系统功耗。 为解决共存性问题, 单带系统一般采用开槽滤波器对信号进行滤波, 从而避免与带内窄带系统相互干
扰,但开槽滤波器的设计往往是比较复杂的。
图 4 单脉冲 UWB 系统信号示意图
在单带系统中, 调制方式可以采用脉位调制(PPM)、 脉幅调制(PAM), 多址方 式采用跳时多址(THMA)、直扩码分多址(DS-CDMA)。对于低速系统,由于符号周 期比较长,多径信道时延扩展不会引起符号间干扰,此时采用跳时-脉位调制 (TH-PPM)、跳时-脉幅调制(TH-PAM)是较合适的 UWB 系统方案。在满足速率要求 的前提下, 采用二进制脉位调制(2-PPM)、 二进制脉幅调制(2-PAM)将有利于降低 设备复杂度, 采用多进制脉位调制(M-PPM)或多进制脉幅调制(M-PAM)与较低的脉 冲重复频率,则有利于克服多径信道引起的符号间干扰。
对于高速系统, 由于符号周期较短, 多径信道将引起严重的符号间干扰, THMA 的性能严重下降, 采用 DS-CDMA 将有利于提高系统可靠性和多用户容量。 若符号 间干扰非常严重,则需要使用瑞克接收机+均衡器的方案进行消除。
3.2 多带系统
多带系统的 3.1~10.6 GHz 频段被划分成若干个 500 MHz 左右的子带。根据 具体应用需要, 使用部分子带或全部子带进行数据传输。 信号成形和数据调制在 基带完成, 通过射频载波搬移到不同子带。 子带数量的增加使射频部分复杂度提 高, 通常需要复杂的射频频率合成电路和相应的切换控制电路。 各子带接收信号 经下变频处理后, 可以使用相同的基带处理部件和算法完成数据检测。 与单带系 统相比,由于每个子带比单带信号的带宽小得多,数字接收机对 AD 转换采样速 率和 DSP 计算速度降低了要求。较小的子带信号带宽使系统抗衰落性能有所下 降, 但捕获多径信号能量所需的瑞克接收机叉指数较少。 多带系统在共存性和规 则适应性方面具有很大的灵活性, 为避免与窄带系统相互干扰, 可以禁用某些子 带,或者配合信道监听技术选择无干扰的子带进行数据传输。
在多带系统中, 通常使用跳频技术(FH)解决多址问题。 相对于符号速率, 跳 频速率可分为慢跳和快跳两种方式。 慢跳是指跳频速率低于符号传输速率, 连续 几个符号在同一子带上传输。 快跳是指跳频速率高于符号传输速率, 每个符号在 几个子带上传输。 慢跳可以降低频率切换和同步捕获电路的复杂度, 但多径信道 引起的符号间干扰将影响传输可靠性。 快跳可以克服符号间干扰并获得频率分集 增益, 但增加了频率切换和同步捕获的难度。 因此, 跳频方式的选择需要在传输 速率、传输可靠性、系统复杂度之间进行折衷考虑。
按调制方式区分,多带 UWB 系统又可分为多带脉冲无线电(MB-IR)和多带正 交频分复用(MB-OFDM)两种方式,图 5、图 6分别为跳频 MB-IR 和跳频 MB-OFDM 的信号示意图。 在 MB-IR 系统中, 每个子带利用持续时间极短的窄脉冲携带信息, 采用脉位调制(PPM)、脉幅调制(PAM)等调制方式。因此,MB-IR 系统继承了传统 脉冲无线电的特点,可以采用瑞克接收机对抗多径信道引起的频率选择性衰落。 由于采用了跳频技术, 每个子带的脉冲重复频率大大下降, 符号间干扰大大减弱, 因此不必采用复杂的均衡技术。 在 MB-OFDM 系统中, 每个子带被划分成若干个等 间隔的窄带子信道,借助逆快速傅里叶变换/快速傅里叶变换(IFFT/FFT)进行 OFDM 调制/解调。因此,MB-OFDM 系统具有频谱利用率高、符号持续时间长的特 点, 借助于循环前缀(CP)可以克服多径信道引入的时延扩展。 结合跳频技术、 交 织技术, MB-OFDM 系统可以进一步在时域和频域获得分集增益。 OFDM 系统固有的 峰均比问题、同步问题、载波间干扰问题是 MB-OFDM 系统的难点。
图 5 调频 MB-IR 系统信号示意图
图 6调频 MB-OFDM 系统信号示意图
4 UWB技术的应用
通常认为,短距离无线网络主要是指无线局域网(WLAN)和无线个域网 (WPAN)。从网络覆盖半径区分,WLAN 覆盖 50~100 m的范围,WPAN 覆盖围绕个 人空间 10 m 左右的地理范围。根据对超宽带(UWB)的容量分析可知:UWB的容量 优势主要体现在 10 m左右的覆盖区域。因此,UWB 的应用主要定位于 WPAN,结 合多跳自组织网络(Ad hoc)技术,网络拓扑可以灵活变化,覆盖范围可以不断延 伸。
目前,IEEE 关于 WPAN 的技术标准可分为两个层次:高速 WPAN 标准 IEEE 802.15.1、IEEE 802.15.3和低速 WPAN 标准 IEEE 802.15.4。其中,802.15.1采用蓝牙(Bluetooth)作为物理层传输技术, 提供最高 1 Mb/s的传输速率和 10 m 的传输距离,适用于中低速无线连接。802.15.3工作于 2.4 GHz免授权频段, 采用网格编码调制技术,提供最高 55 Mb/s的传输速率,可支持高速视频流、大 文件传输等应用。802.15.4采用 ZigBee 技术作为物理层传输技术,提供的最高 传输速率为 250 kb/s,通过降低传输速率可将通信距离延伸至 30 m或更远。其 优势在于价格和功耗,主要应用于遥控、传感器等低端产品。UWB 技术凭借其自 身的技术特点,在高、低速 WPAN 应用中都将成为有力的竞争者。
高速 WPAN 的主要目标是解决个人空间内各种办公设备及消费类电子产品 之间的无线连接,以实现信息的快速交换、处理、存储等,其应用场合包括办公 室、家庭。个人空间内的设备类型非常丰富,大体分为三大类:电脑及其外围设 备,包括个人 PC、大容量移动硬盘、打印机、扫描仪、显示器、键盘、鼠标等; 家用音视频娱乐设备包括 DVD、CD 播放机、数字电视机、数控音响等;便携式终 端,包括笔记本电脑、个人数字助理(PDA)、手机、摄像机、数码相机、MP3等。 这些设备大部分对通信速率和实时性要求很高, 当前他们之间主要通过通用串行 总线(USB)、1394总线等高速总线进行连接,通信速率高达几十兆比特至几百兆 比特每秒。采用 UWB 技术为这些设备提供高速无线连接将是比较理想的解决方 案, 配合上层协议灵活地改变网络拓扑, 既可以实现点对点连接, 也可以实现多 个设备互连。下面给出几个应用实例:
(1)家庭多媒体应用
随着技术的不断进步, 家用电器的范畴不断扩大, 家用电器向数字化、 智 能化、 网络化的方向发展, 其中音视频娱乐设备最为普及。 利用 UWB 技术为这些
设备提供高速无线连接, 无需使用电缆即可建立家庭多媒体网络。 各种设备在小 范围内组成自组织式的网络, 相互传送多媒体数据, 并可以通过安装在家中的宽 带网关接入英特网。图 7所示是 UWB 的典型应用,包括机顶盒、DVD 和数码摄像
机与数字电视的无线连接,数码照相机与电视机、打印机之间的连接等。
图 7 UWB技术用于家庭环境
(2)计算机桌面应用
在计算机桌面上,汇聚了个人 PC/手提电脑及键盘、显示器、扬声器、打 印机、扫描仪、鼠标、移动硬盘等一系列外部设备。当前,电脑与各种外设之间 通过错综复杂的线路相互连接。如果采用 UWB 技术将它们以无线的方式连接起 来, 则将改善线路连接情况。 用户甚至没有必要将所有这些设备都放置在同一个 桌面或房间内,每种设备可以被自由地移动位置。这类应用一般只需要支持 2~ 4 m的传输距离,但速率要求可以从几万比特至几百兆比特每秒。
(3)多媒体会议应用
UWB技术还可应用于会议室等场所。参会人员坐在会议室中,能够利用自 己的便携式电脑组建临时性的自组织网络。 大家既可以自由地交换各种信息, 也 可以共享带有图像和音频的演示文档, 还可以方便地共享投影仪、 打印机等设备,
如图 8所示。
图 8 UWB 技术用于会议室
4 UWB相关的频率利用和规划
近年来,超宽带(UWB)无线通信成为短距离、高速无线网络最热门的物理层 技术之一。超宽带(UWB)技术带来了频率利用方式的转变。进行相关的频率规划 时。UWB 系统与其他相关的无线电系统的兼容性共存条件的确定是核心工作。 4.1 动态利用频率
GSM Uplink
3G FDD
Uplink
Downlink
930~960
GSM
Downlink
3G FDD
Downlink
1880~1920
3G TDD
Uplink
图 9 UWB的频率使用方式
4.2部分国家和地区 UWB 管理情况 (见附件 1)
4.3 我国 UWB 技术频率规划政策 (见附件 2、 附件 3)
转载请注明出处范文大全网 » cs-cart-控制器