Programming Notes :
1--- QT Serial Refference:http://blog.sina.com.cn/s/blog_5edf6e150100czyp.html 此贴是啥意思呢?
你是要做跨平台的串口通信吗?如果是跨平台通讯,可以选择ACE,他有串口的跨平台部分实现。
如果只是linux,那么可以直接操作tty的,没有必要这么麻烦。 谢谢楼上的好心人.
本意是: 这个学期学C++ 我想知道C++语法知识后 学学QT 用QT弄一个串口上位机软件,用于与下位机通讯和画实时曲线 2--- http://www.yafeilinux.com/?page_id=9
点击此处下载 ourdev_594092H0NMG3.rar(文件大小:2.85M) (原文件名:[.[.Qt串口通信专题教程.rar) 3--- 绘制实时曲线的一种想法 用了两个QTimer事件,一个画图,一个更新数据,
http://sns.akaedu.org/home/space.php?uid=250&do=blog&id=429
http://topic.csdn.net/u/20100728/15/fadb5721-9351-4dfc-a84a-f5054203402e.html
http://wenku.baidu.com/view/9cc6b38583d049649b6658d2.html 4---
通过将一个变量的地址强行绑定在一个位段的指针上,并通过该指针来访问位段,实现对该变量任意二进制位单独操作.
DATABit,例如,我要操作DATABit的第4位,怎么实现呢?
typedef struct
{
unsigned bit0 :1;
unsigned bit1 :1;
unsigned bit2 :1;
unsigned bit3 :1;
unsigned bit4 :1;
unsigned bit5 :1;
unsigned bit6 :1;
unsigned bit7 :1;
}BYTE2BIT;
byte DATABit;
void main(void) {
EnableInterrupts; /* enable interrupts */
/* include your code here */
(*((BYTE2BIT*)(&DATABit))).bit4=1;
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
对于byte变量DataBit,表达式先通过"&"运算获得其地址.
接下来,将这一地址的类型强行绑定为指向位域Byte2Bit的指针
最后,利用指针操作符"*",就可以对DataBit变量的任何一个二进制位了. #define UTIL_BIN4(x) (uchar)((0##x & 01000)/64 + (0##x & 0100)/16 + (0##x & 010)/4 + (0##x & 1))
#define UTIL_BIN8(hi, lo) (uchar)(UTIL_BIN4(hi) * 16 + UTIL_BIN4(lo))
用的时候这样:
TCCR1A = UTIL_BIN8(1000, 0010);
=============
#define UTIL_ARG1(a, b) a
#define UTIL_ARG2(a, b) b
#define UTIL_CONCAT(a, b) a ## b
#define UTIL_CONCAT_EXPANDED(a, b)UTIL_CONCAT(a, b)
#define PORT_PIN_SET(pinspec) UTIL_CONCAT_EXPANDED(PORT, UTIL_ARG1(pinspec)) |= (1 << (UTIL_ARG2(pinspec)))
#define HWPIN_HVSP_SCI B, 3
用的时候这样:
PORT_PIN_SET(HWPIN_HVSP_SCI);
===================================
#define UTIL_CONCAT(a, b) a ## b
意思就是把a和b按照字面连接起来
比方说
UTIL_CONCAT(1001,0110) 实际上就是10010110
#define PORT_PIN_SET(pinspec) UTIL_CONCAT_EXPANDED(PORT, UTIL_ARG1(pinspec)) |= (1 << (UTIL_ARG2(pinspec)))
#define HWPIN_HVSP_SCI B, 3
PORT_PIN_SET(HWPIN_HVSP_SCI);
实际上就是 PORTB |= (1 << 3)
一种位操作的方法。
======================================
##在ANSIC标准中只能用在宏定义中,所以VC6会出错,而GCC不是标准的ANSIC,所以不出错也就不奇怪了
#define BIN(x) 0##x
Edit1->Text = BIN(x); // Edit1->Text = 010; // 八进制的10 = 十进制的8 6--Teechar Pro 5.0 :
内部有SN XXourdev_600937AX2NEG.rar(文件大小:8.42M) (原文件名:Teechar.rar)
页:
[1]