为什么《泰拉瑞亚》联机总显示连接已丢失?

为什么《泰拉瑞亚》联机总显示连接已丢失?,第1张

一:当初是否是使用Terraria自带的服务器创建软件Terraria Server来创建游戏IP,不是使用Terraria Server创建的游戏IP是不能联机的。

如果确实未使用,则重新用Terraria Server来创建新的游戏IP。

二:网络是否有问题。

如果网速太慢,网络状况不佳,甚至是断网,都会导致连接丢失。此时可关闭其他非必须的下载运行软件或等待网络回归正常再重新连接。

三:防火墙。

在防火墙设置中查看是否禁用了teraria的游戏进程。

四:游戏的完整性。

在Steam平台中验证游戏的完整性,若有文件的缺失,则将游戏文件下载完整。

泰拉瑞亚这款游戏在自由上的表现,作为和《我的世界》齐名的存在,《泰拉瑞亚》和《我的世界》一样,是开放大世界且没有任何强制要求。不过不同于《我的世界》的是《泰拉瑞亚》的世界观,玩家们可以选择做一个隐居的人,也可以选择接受自己的使命,去探索整个世界。也就是说,在《泰拉瑞亚》里面,玩家们是有选择的自由。

我以前编写的51单片机通过SIM300模块用GPRS把采集到的温度发送到设定的TCP服务器,你可以看看,发短信很简单,根据AT指令修改一下前面的代码即可。
/8位共阳数码管,18b20接P3^3,110592晶振/
#include<reg52h>
#include<intrinsh>
#define uchar unsigned char
#define uint unsigned int
uchar th,tl;//存放采集温度高8位,低8位
uchar temp_int,temp_dot;//存放转换后的温度整数部分和小数部分
sbit dq=P3^3; //18b20数据接口
bit stat_18b20; //18b20初始化返回状态
uchar ctrl_z=0x1a;//GPRS数据发送结束标识ctrl+z键16进制码
uchar ATCLPORT[]="AT+CLPORT=\"TCP\",\"5256\"\r"; //设置本地GPRS通信协议以及端口号
uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"121233142158\",\"6000\"\r"; //连接TCP服务器
uchar ATCIPSEND[]="AT+CIPSEND\r"; //启动数据发送命令
void uart_init(); //串口初始化
void delayus(uint xus); //延时微秒
void delayms(uint xms); //延时毫秒
init_18b20(); //18b20初始化
readchar(); //读一个字节
void writechar(uchar dat); //写一个字节
void get_temp(); //取温度
void temp_convert(); //转换温度
void send_string(uchar gprs_string); //给GPRS模块发送字符串
void send_char(uchar);
void gprs_init(); //GPRS模块初始化
void send_temp(); //通过GPRS模块发送温度
//--------------下面为主函数----------------
void main(void)
{
uart_init();
gprs_init();
while(1)
{
get_temp();
temp_convert();
send_temp();
}
}
void uart_init()
{
TMOD=0X20;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
}
//--------------下面为延时 *** 作函数----------------
void delayus(uint xus)
{
for(;xus>0;xus--);
}
void delayms(uint xms)
{
uint i;
uchar j;
for(i=0;i<xms;i++)
for(j=0;j<112;j++);
}
//--------------下面为DS18B20 *** 作函数----------------
init_18b20()
{
stat_18b20=1;
dq=1;
delayus(5);
dq=0;
delayus(50);
dq=1;
delayus(5);
stat_18b20=dq;
delayus(60);
dq=1;
return(stat_18b20);
writechar(0x4e);
writechar(0x02);
writechar(0x01);
writechar(0x7f);
}
readchar()
{
uchar i,dat;
for(i=8;i>0;i--)
{
dq=0;
dat=dat>>1;
dq=1;
if(dq)
dat=dat|0x80;
delayus(4);
}
return(dat);
}
void writechar(uchar dat)
{
uchar i;
for(i=8;i>0;i--)
{
dq=0;
dq=dat&0x01;
delayus(5);
dq=1;
dat=dat>>1;
}
}
void get_temp()
{
init_18b20();
if(stat_18b20==0)
{
writechar(0xcc);
writechar(0x44);
delayms(50);
init_18b20();
writechar(0xcc);
writechar(0xbe);
tl=readchar();
th=readchar();
}
else
{
; //错误处理模块
}
}
void temp_convert()
{
temp_int=((th&0x07)<<4)|((tl&0xf0)>>4);
temp_dot=tl&0x0f;
}
//--------------下面为SIM300 *** 作函数----------------
void send_string(uchar gprs_string)//指令字符串发送指令
{
while(gprs_string)
{
SBUF = gprs_string;
while(TI==0);
TI=0;
gprs_string++;
}
}
void send_char(uchar x)
{
SBUF=x;
while(TI==0);
TI=0;
}
void gprs_init()
{
send_string(ATCLPORT);
delayms(1000);
send_string(ATCIPSTART);
delayms(1000);
}
void send_temp()
{
send_string(ATCIPSEND);
send_char(temp_int);
send_char(temp_dot);
send_char(ctrl_z);
delayms(1000);
}

可以参考下面的理解:
1、这个是定时器0的中断函数。
2、从字面上可以看到Timer0——定时器0,interrupt——中断。
3、定时器设置初值并打开后,当计数器计数到用户设置的数后,就会产生一个定时器中断,然后无论你当时程序在运行什么代码,都会跳转到IsrTimer0这个函数运行,运行完毕后再跳回去执行之前的代码。
4、void
IsrTimer0(void)
interrupt
1using
1这个写法不能变,函数名是也要这样写的。

扩展资料:


单片机定时器介绍
定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。
此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。
TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。
TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。
参考资料来源:百度百科-单片机


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13451008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存